SQL Server子句的索引的一般顺序是什么?

时间:2015-10-08 16:36:31

标签: indexing sql-server-2000

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 

为上述案例创建覆盖索引的一般方法是什么?

是否像

中的列
  1. ORDER BY
  2. GROUP BY
  3. WHERE
  4. JOIN
  5. 选择
  6. 就像

    INDEX (Col4, Col1, Col3, Col2) ?
    

    我使用的是SQL Server 2000

1 个答案:

答案 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

进行索引