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
为上述情况创建覆盖索引的一般方法是什么?
是否像
中的专栏
- 订购方式
- 分组依据
- 哪里
- 加入
- 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
建立索引
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
为上述情况创建覆盖索引的一般方法是什么?
是否像
中的专栏- 订购方式
- 分组依据
- 哪里
- 加入
- 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