MySQL 中是否有为表创建覆盖索引的标准顺序?这意味着如果我的查询包含 where 子句、order by 和 select 语句中的字段,那么我将以什么顺序将字段添加到索引中以正确创建覆盖索引?
覆盖索引采用逗号分隔列表中的列列表。从左侧开始遍历/审查该列表。如果不使用最左边的列,则不使用索引。意思是,有一个列列表,例如:
col_a, col_b, col_c
如果查询不包含对col_a
,不会被使用。如果顺序改为:
col_c, col_b, col_a
...then col_c
需要在查询中引用。继续使用第二个覆盖索引列示例,col_b
or col_a
不必位于查询中,但评估会从左到右逐列移动。
索引使用的列引用可以在以下子句中:
- SELECT
- WHERE
- GROUP BY
- HAVING
- ORDER BY
参考:
- 多列索引,MySQL 文档 http://dev.mysql.com/doc/refman/5.1/en/multiple-column-indexes.html
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)