我们有一个没有索引(堆)的表,有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);
答案 0 :(得分:1)
如果您创建非群集然后为了提高性能,请使用覆盖索引(如果您使用的是SQL Server,则类似地存在于其他数据库中但我不是100%当然)。
答案 1 :(得分:0)
它是不同的
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