![]() |
1
0
基数与选择性 单列 在某种程度上是无关紧要的 混合成的 指数 将InnoDB BTree索引中的值视为指定列的串联。 用列大致按以下顺序填充索引:
“覆盖”指数会导致一些例外情况。 你的例子: (A) 查询具体的一、二、三、四:
(B) 查询具体的一、二、三和四的范围
这个
(C) 查询4范围内的具体1、2和任意3
但是,这一次,
或者(尽管不太可能),优化器可以选择使用
(D) 使用JOIN查询特定的1和2,3个在列表中,3个在列表中,4个在范围内 这会变得更加棘手,因为优化器将选择从哪个表开始。 通常 它会选择一个有更多过滤可用的,你在数据列表中过滤一,二,四?但另一张桌子上一点也没有。所以
更多: http://mysql.rjweb.org/doc.php/index_cookbook_mysql
“没有PK”——是的,这很糟糕。但它不一定是一个
“另类桌子设计也受欢迎”——我们需要有一个什么样的感觉
如果您有这4个查询,并且希望得到最佳的索引集:
(其他组合也会做得同样好。)
如果你在面试中更挑剔
|