我已按以下方式创建了一个程序,
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语句包含很多连接,并且需要花费大量时间来执行。任何人都可以向我解释一种更快的方法。
答案 0 :(得分:0)
我首先建议您使用" WITH RECOMPILE"提示您的存储过程。这将重新编译SP并根据变量最终设置的方式生成新的执行计划。每次都有新的执行计划。
此外,我会考虑在您加入的列上添加索引,并在为您要输出的列创建非聚簇索引时使用INCLUDE列。