是否有为 MySQL 中的表创建覆盖索引的标准顺序?这意味着如果我的查询具有 where 子句、order by 和 select 语句中的字段,我将按什么顺序将字段添加到索引以正确创建覆盖索引?
问问题
1211 次
2 回答
3
覆盖索引采用逗号分隔列表中的列列表。从左侧开始遍历/查看此列表。如果不使用最左边的列,则不使用索引。意思是,有一个列列表,如:
col_a, col_b, col_c
如果查询不包含对 的引用col_a
,则不会使用它。如果订单更改为:
col_c, col_b, col_a
...然后col_c
需要在查询中引用。继续使用第二个覆盖索引列示例,col_b
或者col_a
不必在查询中但评估从左到右逐列移动。
索引使用的列引用可以在以下子句中:
- 选择
- 在哪里
- 通过...分组
- 拥有
- 订购方式
参考:
于 2011-01-26T00:20:03.147 回答
1
MySQL 使用多列索引的方式是,当您在 WHERE 子句中为索引的第一列指定已知数量时,即使您没有为其他列指定值,查询也会很快。
链接页面上的示例还指出,如果您没有为索引中的第一列指定值,则不使用索引。
于 2011-01-26T00:20:09.970 回答