这只是一个简单的问题,但是当索引跨越多个列时,索引的顺序重要吗?

例如,以查询为例:

SELECT * FROM my_table WHERE (column_1 = 1 AND column_2 = 2)

如果我想为这样的查询添加索引,如果我的索引是这样创建的,有关系吗?

CREATE INDEX my_index
ON my_table (column_1, column_2)

或者像这样:

CREATE INDEX my_index
ON my_table (column_2, column_1)

谢谢你的帮助!

推荐答案

在您给出的示例中,列顺序并不重要.

如果您对列进行排序,这将很重要;(col1,col2)上的索引可以用于ORDER BY col1, col2,但不能用于ORDER BY col2, col1.

对于WHERE个子句,(col1, col2)的索引适用于WHERE col1 = 1 AND col2 = 1.它也适用于WHERE col1 = 1.但这对WHERE col2 = 1没有帮助.

Database相关问答推荐

包含接受Cassandra中多个数据的语句

触发器作为完整性的判断约束

在GridDB中使用存储过程失败

如何使用聚合管道从对象数组中获取正确的百分比

MySQL解释更新

什么是非规范化 mysql 数据库的好方法?

按请求的可变事务隔离级别

如何最好地在 MS SQL Server 中复制整个数据库?

当可伸缩性无关紧要时,NoSQL 与 SQL

我可以在 mysql 中的 select 语句上启动触发器吗?

为什么数据库索引使用平衡树,而不是哈希表?

如何从表列中删除唯一约束?

使用存储过程是一种不好的做法吗?

如何通过 PHP 和 Linux 使用 pdo 连接到 mssql?

如何取消长时间运行的数据库操作?

MySQL 错误 - #1062 - Duplicate entry ' ' for key 2

Redis-cli - Select 哪个实例?

如何在android中使用合同类?

如何对彼此接近的纬度/经度点进行分组?

SQL Server Express LocalDB 可以远程连接吗?