假设我在 foo 表的两列上有一个索引,索引为 (x,y)
如果我将其搜索为 select * from foo where x=1 and y=2
或 select * from foo where y=2 and x=1
。在 mysql 上真的很重要吗?
最佳答案
简短回答 - 不,没关系。 MySQL 将尝试选择最佳索引来使用,无论该列在 WHERE
子句中出现在第一位还是第二位。
您可以通过运行 EXPLAIN
来证明这一点关于每一项的声明以获取有关 how MySQL will execute the query 的更多信息- 它应该显示在两种情况下使用相同的索引。
如果您谈论的是列在索引中出现的顺序 - (x,y)
与 (y,x)
,这也无关紧要在这种情况下,因为您选择使用两列。但是,如果您有时只选择其中一列,则该列应该首先出现在索引中,以便 MySQL 可以在仅提供一个值时使用部分索引来帮助优化查询。
关于mysql - 索引创建的顺序重要吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17739679/