索引分类:
1、聚集索引:索引顺序与物理顺序一致。
MySql 的 InnoDB 中,主键索引就是聚集索引。好处是,进行搜索的时候,因为索引和物理顺序一致,所以找数据的时候更快。
2、非聚集索引:索引顺序与物理顺序不一致。
非主键索引。
在非主键索引中,又有组合索引(最左索引:也就是查询的时候如果where条件里面没有最左边的一到多列,索引就不会起作用)。
区别:
由于聚集索引的有序性,因此十分适合范围查找。当找到相应的范围区间,就直接获取数据。(类比为数组)
由于非聚集索引的索引顺序月物理存储顺序不一致,因此在查找的时候,可能需要二次查找。即先根据索引获取到数据的物理地址,再根据物理地址获取数据。(类比为链表)
什么情况下设置了索引,但却无法使用?
1、以 "%" 开头的LIKE语句,模糊匹配进行索引时。
2、OR语句前后没有同时使用索引。
3、数据库类型出现隐式转换,如日期类型,详见。
优化SQL:
1、语句优化,慢SQL日志与explain结合使用,分析出SQL慢的原因。
2、表的优化,设置适当的冗余字段。