在sql中优化条件语句

时间:2011-01-06 11:23:44

标签: sql optimization conditional-statements

select Item 
into #transferTheseItems
from IDTable where id = @myCondition

if exists (select 1 from #transferTheseItems)
/*
insert this huge data to a remote database over linked server
*/

虽然temp中没有记录,但查询执行时间太长。

我也试过

if not exists (select 1 from #transferTheseItems)
return

但没有改变。

我认为sql server试图分析它永远不会执行的部分。

有没有办法跳过这个?

3 个答案:

答案 0 :(得分:1)

可能对你有帮助:

select Item 
into #transferTheseItems
from IDTable where id = @myCondition

IF @@ROWCOUNT > 0
    ....
ELSE
    ....

答案 1 :(得分:0)

最后我意识到了;

试试这个

if 1 = 0
select * from a
join b on a.ID = b.ID
join c on c.ID = b.ID

对于第一次执行,即使您的复杂查询不会被执行,查询也需要时间来执行。因为sql生成“执行计划”。

再次运行它,你会发现几乎没有时间。因为sql server保存了该查询的执行计划。

答案 2 :(得分:0)