SQL 服务器子句的索引的一般顺序是什么?

What's the general order of index for SQL Server clauses?

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. 订购方式
  2. 分组依据
  3. 哪里
  4. 加入
  5. SELECT

这就像

INDEX (Col4, Col1, Col3, Col2) ?

我用的是SQLServer 2000

这是我测试发现的

• 首先应该是 JOIN

o 索引字段顺序应与 JOIN 顺序相反[自下而上]

o 如果在 PK 上加入,那么您在 table 上创建的任何索引都不会被使用。服务器只会使用PK。

• 然后在哪里

o 索引字段顺序应与 WHERE 顺序相反[自下而上]

• 然后分组

• 然后按

排序

• 然后 SELECT [如果做覆盖索引]

同时索引任何计算列

View/Sproc 的部分索引不会加速。如果在多 table 查询中的 GROUP BY 上索引的列很少,则索引会减慢速度。本来就是用PK的,速度很快。所以不要在多 table 查询

上打扰部分索引

如果在视图上执行了 SQL 语句,如果索引 SQL 语句则不会提高性能。索引应该基于View

Select * from Leasedetailsqry where status ='Active' And (territory LIKE 'Quebec') ORDER BY id

索引区域,状态没有提供任何性能改进。您应该根据视图 Leasedetailsqry

建立索引