关于mysql数据表新建联合索引,及where条件查询多个and之间索引作用顺序的问题解析

原创
2020/05/24 23:16
阅读数 4.8K
  1. 新建数据库表:create table user_info(
        uid INT(11) NOT NULL AUTO_INCREMENT COMMENT '主键uid',
        age INT(3) COMMENT '年龄',
        uname VARCHAR(50) COMMENT '姓名',
        birthday TIMESTAMP COMMENT '出生',
        sex CHAR(1) COMMENT '性别',
        address VARCHAR(50) COMMENT '地址',
        PRIMARY KEY ( uid )
  2. 新建联合索引 create index ua_index  on user_info (age,uname)
  3. select * from user_info where uid =1 and age >30 and uame = '张三' 这条sql数据默认索引生效规则是怎么的呢,是走主键索引还是联合索引? 可以通过explain 查询该条sql的执行计划,多个where 条件索引生效规则按照where 近左原则搜索生效,如where 后面中有or关联查询,则所有索引全部失效。联合索引,遵循最左竞职原则,默认第一个索引为常量时,联合索引效果最佳,举个栗子:创建联合索引(a,b,c)那么默认生效有效索引为(a),(a,b),(a,b,c) 特别注意 (b,c)在where条件下是不生效的)因此在平时创建表的时候,自己要格外注意,为后续表多数量做优化时候,可以用得到
展开阅读全文
加载中
点击引领话题📣 发布并加入讨论🔥
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部