例如,如果我有一个包含 city
和 state
列的表,使用索引的最佳方式是什么?
显然 city
将具有最高的基数,所以我应该将该列放在索引的第一位,我应该把 state 放在首位吗?
最佳答案
在这种情况下没关系:
INDEX cs (city, state),
INDEX sc (state, city)
WHERE city = 'Atlanta'
AND state = 'Georgia'
无论使用哪个索引,BTree 中的向下钻取都将是相同的工作量,并且您将以同样快的速度到达一行。
(WHERE
中子句的顺序无关紧要。)
(如果您使用的是“范围”测试而不是 =
测试,那是 a different Question。)
关于mysql - 哪一列放在索引的第一位?更高或更低的基数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12315496/