【发布时间】:2013-10-17 21:59:25
【问题描述】:
假设我有一个包含两个索引的表 - 一个在 a 列上,一个在 a、b 和 c 列上。
我注意到,根据索引定义中列的顺序,即使引用了多列索引中的所有三列,MySQL 也可能最终使用单列索引而不是多列索引在 JOIN 的 ON 部分。
这就引出了一个问题……如何确定列的理想顺序?你只需要蛮力吗?
【问题讨论】:
-
你能展示一个发生这种情况的示例查询吗?只有在索引中使用列的子集时,排序才有意义:列必须是索引的前缀。
-
没那么容易。这是我的雇主数据库,我不想将架构发布到非公共数据库,更不用说提供可以进行查询的数据了。我试图在 sqlfiddle.com 上制作沙盒示例(其正常运行时间最近参差不齐)但没有成功:(
-
.. 这有点引出问题 - 为什么要在论坛上发布一个模糊的问题?
-
什么构成模糊?如果我说“是否有可能找到包含特定代码 sn-p 的所有文件?我正在使用 linux”,一个正确的答案是
grep -r whatever .。我想在那个问题中,人们可以看到这样一个事实,即他们没有说他们正在使用哪个编辑器或 IDE,因为这使问题变得模糊,但这并不意味着没有明确的答案。 -
@neubert - 没有架构,没有可处理的查询。猜测这使其含糊不清,因此无法提供建议