索引类型
1、unique ,唯一索引
2、normal,普通索引
3、fulltext, 全文索引
4、spatial,空间索引
主键索引是基于主键约束建立的索引,强调唯一且非空;聚簇索引是表数据实际存储所在的索引,强调数据组织方式。在 InnoDB 中,主键通常会被用作聚簇索引,但两者不是完全等价的概念。
样例

三个字段的联合索引,走一个字段是key_len是5,三个是15.
联合索引关于 使用in是不影响后续列

联合索引中,>、< 属于范围查询,范围列后面的字段通常难以继续像等值条件那样参与精确定位,因此会影响后续列对索引的利用。

联合索引中,>=、<= 也属于范围查询,本质上同样会影响后续列继续参与精确定位。 不过由于边界是否包含等值点不同,执行计划有时会表现为后续列仍然参与了索引判断,例如体现在 key_len 变长,或者通过索引下推(ICP)参与过滤。 因此,不能简单理解为 >=、<= 不影响后续索引,而应理解为:它们与 >、< 一样都属于范围条件,只是在执行计划上的表现可能有所不同。

这里需要注意区分“参与索引定位”和“参与索引过滤”两个概念。
范围条件后面的列,很多时候不能继续用于缩小索引扫描范围,但如果这些列仍然包含在联合索引中,就可能通过索引下推(ICP)在索引层先做过滤,从而减少回表次数。
因此,执行计划中看起来“后续列仍然用了索引”,并不一定表示它仍然参与了精确定位。
在where中只要三个字段都包含(顺序不是必须安装最左原则),优化器会自动按照索引顺序走索引。


1737

被折叠的 条评论
为什么被折叠?



