堆的新索引,sql索引中列的顺序是否重要?

时间:2018-04-26 04:51:04

标签: sql indexing

我们有一个没有索引(堆)的表,有3列(A,B,C,D,E)。 我们需要为此选择创建新索引:

SELECT A FROM T1 WHERE A=1 AND C=3
SELECT D FROM T1 WHERE C=4 and A=1

如果我创建2个这样的索引有意义吗?或者它是一样的吗?

CREATE INDEX  indexC1 ON T1(A, C);
CREATE INDEX  indexC2 ON T1(C, A);

2 个答案:

答案 0 :(得分:1)

  1. 两者都是一样的。索引存储在两列中。
  2. 现在,如果Table没有密钥,那么你可以创建集群索引来解决所有问题。(性能)
  3. 如果您创建非群集然后为了提​​高性能,请使用覆盖索引(如果您使用的是SQL Server,则类似地存在于其他数据库中但我不是100%当然)。

    • 通过使用覆盖索引,您可以将您在Select Like A或D中使用的列或任何其他列不属于索引,但它是结果的一部分。

答案 1 :(得分:0)

它是不同的

SQLServer示例:

CREATE INDEX  indexC2 ON T1(C, A);
SELECT * FROM T1 WHERE C=4  --it will run index,because C is first key

CREATE INDEX  indexC2 ON T1(C, A);
SELECT D FROM T1 WHERE A=4  --it won't run index,because when it run 
                            --will check is C first key or not
                            --if C is first key then check A key