多列索引的顺序

jap*_*ese 21 sql database

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

例如,采取查询:

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)

谢谢您的帮助!

And*_*mar 23

在您给出的示例中,列顺序无关紧要.

如果你在一个专栏上订购会很重要; 索引(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.

  • 实际上即使在这种情况下它也很重要.如果几乎每一行都有col1 = 1,那么如果col2是第一个,索引很可能会更好地工作,即使你同时查询两者. (4认同)
  • 如果一列具有明显高于另一列的可能性,则在所提供的示例中也可能是重要的.首先放置具有高选择性(许多不同值)的列. (3认同)