主要内容来自三星索引
★☆☆
定义:如果与一个查询相关的索引行是相邻的,或者至少相距足够靠近的话,那这个索引就可以标记上一颗星。
收益:它最小化了必须扫描的索引片的宽度。
实现:把 WHERE 后的等值条件列作为索引最开头的列,如此,必须扫描的索引片宽度就会缩至最短。
★★☆
定义:如果索引行的顺序与查询语句的需求一致,则索引可以标记上第二颗星。
收益:它排除了排序操作。
实现:将 ORDER BY 列加入到索引中,保持列的顺序
★★★
定义:如果索引行中包含查询语句中的所有列,那么这个索引就可以标记上第三颗星。
收益:这避免了访问表的操作(避免了回表操作),只访问索引就可以满足了。
实现:将查询语句中剩余的列都加入到索引中。
评估一个索引是否适合某个查询的“三星系统”(three-start system):
- 一星:索引将相关的列放到一起,即在一系必要的列上建立索引,不必为在where条件里面的列都建立索引。
- 二星:索引中的数据列顺序和查找中排列顺序一致。通常将选择性最高的列放到索引的最前列。
- 三星:索引中的列包含了查询中需要的全部列。索引包含查询所需要的数据列,不再进行全表查表,回表聚集索引(聚簇索引、覆盖索引)。
http://www.notedeep.com/page/464
http://blog.itpub.net/29701030/viewspace-2646874/
原文链接: https://dashen.tech/2020/03/22/MySQL三星索引/
版权声明: 转载请注明出处.