2

我很好奇这是如何处理的。我有一个varchar(255)名为的列title,其中索引了前 10 个字符。

如果我创建一个按标题排序的 MySQL 查询,它是仅利用该索引,还是忽略它,还是我必须发出命令才能使用该索引?

例如,假设我有两个title名为:

This is the same thing
This is the same thing only slightly different

前 10 个字符是相同的,那么 MySQL 是如何处理的呢?它是否使用前 10 个字符的前缀索引,然后逐行索引?

4

1 回答 1

1

嗯,据说

即使 ORDER BY 与索引不完全匹配,也可以使用索引,只要索引的所有未使用部分和所有额外的 ORDER BY 列都是 WHERE 子句中的常量。

但我强烈建议用 EXPLAIN 检查这个查询,看看优化器会选择哪条路径。

于 2012-07-06T23:24:13.813 回答