是否有标准订单来为MySQL中的表创建覆盖索引?这意味着如果我的查询有一个werter子句,顺序和选择语句中的字段,我将以哪个顺序有索引的字段来正确创建覆盖索引?

有帮助吗?

解决方案

覆盖索引在逗号分隔列表中获取列列表。此列表从左侧开始遍历/审查。如果不使用大多数列,则不使用索引。意思是,拥有一个类似的列列表:

col_a, col_b, col_c

如果查询不包含对 col_a, ,不会使用它。如果订单更改为:

col_c, col_b, col_a

...然后 col_c 需要在查询中引用。继续使用第二个覆盖索引列示例, col_b 或者 col_a 不必进入查询,但是评估从左到右列列移动。

索引使用的列参考可以在以下条款中:

  • 选择
  • 在哪里
  • 通过...分组
  • 顺序

参考:

其他提示

MySQL优化7.5.2多列索引 说:

MySQL使用多列索引的方式,即当您在WHERE子句中指定索引的第一列的已知数量时,查询即将快速,即使您不为其他列指定值。

链接页面上的示例还指出,索引是 不曾用过, ,如果未指定索引中第一列的值。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top