如何提高包含大量连接和联合的sql查询的性能

时间:2014-08-18 07:56:43

标签: sql-server tsql stored-procedures

我已按以下方式创建了一个程序,

create procedure proc_foo
as 
begin
declare @someVar int
set @someVar=0
if exists (select column1 from tbl1)
begin
set @someVar = 1
end
if exists (select column2 from tbl2)
begin
set @someVar = 1
end
....
...
....
if exists (select columnN from tblN)
begin
set @someVar = 1
end
if(@someVar =1)
begin
 select count(column1) from tbl1
 union
 select count(column2) from tbl2
 union
 ...
 ...
 ...
 select count(columnN) from tblN

end
end

select语句包含很多连接,并且需要花费大量时间来执行。任何人都可以向我解释一种更快的方法。

1 个答案:

答案 0 :(得分:0)

我首先建议您使用" WITH RECOMPILE"提示您的存储过程。这将重新编译SP并根据变量最终设置的方式生成新的执行计划。每次都有新的执行计划。

此外,我会考虑在您加入的列上添加索引,并在为您要输出的列创建非聚簇索引时使用INCLUDE列。