mysql 索引使用逃坑笔记
mysql 索引分为 单列索引和联合索引。单列索引很简单,不用多说。复合(联合)索引这里唠叨几句。
-
联合索引的索引体积比单独索引的体积要小,而且只是一个索引树,相比单独列的索引要更加的节省时间复杂度和空间复杂度
- 最左匹配原则
当创建(col1
,col2
,col3
)联合索引时,相当于创建了(col
)单列索引,(clo1
,clo2
)联合索引以及(col1
,col2
,col3
)联合索引想要索引生效,只能使用col1
和col1
,col2
和col1
,col2
,col3
三种组合;当然,col1
,col3
组合也可以,但实际上只用到了col1
的索引,col3
并没有用到!
联合索引相当于一个按照姓氏——名字
的一个电话簿,只能先确定姓氏才可以命中索引,下列可以正确命中联合索引的语句( =
和IN
直接的字段都可以乱序,MySQL的查询优化器可以优化成索引识别的形式)
总之,联合索引尽可能按照栏位顺序使用,单独使用几乎无效!!!
滴水成冰,世间不存在毫无意义的付出,时间终会给你答案。