联合索引的触发条件

        在MySQL InnoDB 的存储引擎中,创建表的时候,是需要创建主键的,而且主键也是一个唯一索引,创建索引的目的就是为了提高查询的效率,而索引的分类有:
单列索引、复合索引、唯一索引、主键索引、全文索引、Hash索引、B+树索引等等。
        对于复合索引的创建,如下:
CREATE TABLE `student` (
  `STUDENTID` int NOT NULL,
  `STUDENTNAME` varchar(20) DEFAULT NULL,
  `STUDENTIDENTIFY` int NOT NULL,
  PRIMARY KEY (`STUDENTID`,`STUDENTIDENTIFY`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
        插入一些数据之后分析:

       

    现在表中有6条数据,执行以下操作:

1、第一种情况:符合索引的全部 AND 触发。
EXPLAIN SELECT * FROM STUDENT WHERE STUDENTID = 1 AND STUDENTIDENTIFY = 11 ; 
分析结果:显示的是查找了1行。
        
再做以下操作:

2、复合索引的全部 OR 触发
EXPLAIN SELECT * FROM STUDENT WHERE STUDENTID = 1&nbs***bsp;STUDENTIDENTIFY = 11 ; 
 分析结果是:查找了6条


3、复合索引的前缀部分触发
EXPLAIN SELECT * FROM STUDENT WHERE STUDENTID = 1 ; 
分析结果:查找了 1 条



4、符合索引的非前缀部分,也就是其他的部分,这里演示后缀的部分
EXPLAIN SELECT * FROM STUDENT WHERE STUDENTIDENTIFY = 11 ; 
分析结果:查找了 6 条


总结:
    复合索引的触发条件:
        1、使用复合索引的全部索引键,并且是AND条件,是可以触发复合索引的使用的。
        2、使用复合索引的全部索引键,但不是AND或许是OR,这样子是不能触发复合索引的使用的。
        3、使用复合索引的前缀部分索引键,是可以触发复合索引的使用的。
        4、使用复合索引的非前缀索引键,是不能触发复合索引的使用的。
    对于不能触发复合索引的情况下,查找一个数据,是需要查找所有的数据行的。




全部评论

相关推荐

10-09 22:05
666 C++
找到工作就狠狠玩CSGO:报联合国演讲,报电子烟设计与制造
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务