改进t-sql视图

时间:2013-01-17 23:15:20

标签: sql sql-server performance sql-server-2008 tsql

我正在编写一个基本上从多个视图中拉出多个列的查询。索引每个视图以获得更快的性能是否更好?

查询,即A到G是视图

SELECT A.C1, B.C1
FROM A INNER JOIN B on A.C3=B.C3 
Inner join C on C.C2 = B.C2
inner join D on D.C4 = C.C4
...
Inner join H ON H.C5 = G.C5
where <some condition>

每个视图(A到H)都从不同的表中提取数据。没有索引被编入索引(当我在视图的树中展开INDEX文件夹时,我看不到任何内容)。我应该在每个视图中添加索引以获得更快的性能吗?如果是这样,我应该在我用于ON JOIN子句的列上添加索引吗?

谢谢

1 个答案:

答案 0 :(得分:1)

首先,启用“包含实际执行计划”并运行查询以查看性能命中的位置。寻找“表扫描”作为可能的罪魁祸首。

如果找不到任何明显的信息,请尝试查询 - &gt; “分析数据库引擎优化顾问中的查询”。 SQL服务器会建议添加一些索引。不要只应用它们,而是与现有查询进行比较,以确保不会添加太多重叠。

正如nkj所说,在索引视图之前优化对表的查询。