https://dev.mysql.com/doc/internals/en/optimizer-and-relations.html
文章说,如果两个条件都被索引并且具有相同的连接类型,那么它将使用首先创建的索引。
如果一个索引具有更高的基数,那么选择该索引作为驱动程序会更好。它不应该查询存储引擎吗?
如果不是我应该在这些情况下强制索引,如果我对基数有所了解?
答案 0 :(得分:1)
我想知道这个文档是否过时了。毕竟,描述似乎会使analyze table
变得更加有用。这是documented:
MySQL使用存储的密钥分配来决定其中的顺序 当您对其他内容执行连接时,应该连接表 而不是常数。此外,关键分布可以在何时使用 决定在查询中为特定表使用哪些索引。
此描述与内部文档中的文档特别相矛盾。
或者,这个引用可能写得不好,适用于没有其他密钥分发信息可用的情况。正如你所说,使用带有更高基数的索引可能是一个更好的起点。
另外,正如文档本身所述,使用“连接类型”的描述很差。这应该只是被称为“比较类型”,或类似的东西。