SELECT Col1
FROM Tab1
INNER JOIN Tab2 ON Tab1.Col2 = Tab2.Col2
WHERE Tab1.Col3 = "some ID"
GROUP BY Col1, Col4
ORDER BY Col4 DESC
为上述案例创建覆盖索引的一般方法是什么?
是否像
中的列就像
INDEX (Col4, Col1, Col3, Col2) ?
我使用的是SQL Server 2000
答案 0 :(得分:0)
这是我通过测试找到的
•首先应该是JOIN
o索引字段顺序应与JOIN顺序[自下而上]
相反o如果JOIN ON PK,则不会使用您在启动PK字段的表上创建的任何索引。服务器只会使用PK。
•然后WHERE
o索引字段顺序应与WHERE顺序[自下而上]
相反•然后GROUP BY
•然后按ORDER BY
•然后选择[如果进行覆盖索引]
同时索引任何计算列
拥有View / Sproc的部分索引不会加快速度。如果在多表查询中对GROUP BY编制索引的列很少,则索引会降低它的速度。最初它使用PK而且速度很快。所以不要打扰多表查询的部分索引
如果在View上执行了SQL语句,则在索引SQL语句时不会提高性能。索引应基于视图
Select * from Leasedetailsqry where status ='Active' And (territory LIKE 'Quebec') ORDER BY id
索引区域,状态未提供任何性能改进。您应该根据视图Leasedetailsqry