Mysql索引'和'选择始终首先创建的索引?

时间:2015-08-20 19:04:14

标签: mysql indexing cardinality

https://dev.mysql.com/doc/internals/en/optimizer-and-relations.html

文章说,如果两个条件都被索引并且具有相同的连接类型,那么它将使用首先创建的索引。

如果一个索引具有更高的基数,那么选择该索引作为驱动程序会更好。它不应该查询存储引擎吗?

如果不是我应该在这些情况下强制索引,如果我对基数有所了解?

1 个答案:

答案 0 :(得分:1)

我想知道这个文档是否过时了。毕竟,描述似乎会使analyze table变得更加有用。这是documented

  

MySQL使用存储的密钥分配来决定其中的顺序   当您对其他内容执行连接时,应该连接表   而不是常数。此外,关键分布可以在何时使用   决定在查询中为特定表使用哪些索引。

此描述与内部文档中的文档特别相矛盾。

或者,这个引用可能写得不好,适用于没有其他密钥分发信息可用的情况。正如你所说,使用带有更高基数的索引可能是一个更好的起点。

另外,正如文档本身所述,使用“连接类型”的描述很差。这应该只是被称为“比较类型”,或类似的东西。