mysql - 索引创建的顺序重要吗

标签 mysql optimization indexing

假设我在 foo 表的两列上有一个索引,索引为 (x,y)

如果我将其搜索为 select * from foo where x=1 and y=2select * 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/

相关文章:

php - 从站点 A 登录到站点 B?

c++ - Bresenham 的直线算法与朴素 vector 加法

python - 调度算法,找到所有设置长度的非重叠区间

mysql - 索引和唯一性/与主键的关系的约束

javascript - 对象集合中的 jQuery .index

php - 为什么评论没有上传到 MySQL 数据库?

php - 在 IF 条件下选择 DATEDIFF 时出错

sql - SQL Server 如何使用其索引

python - Unicode 字符另存为 ?在 MySQL SQLAlchemy 中(警告 : Incorrect string value)

mysql - 要存储在两个不同列中的串联列