2010-07-12 30 views
1

我处于需要多次执行相同查询的情况。我必须查看返回的某行是否与特定值(查询1)相对应,否则,我必须返回结果集的第一行(查询2)。在SQL Server 2008中,我想知道什么是最好的:运行查询并将结果存储在表变量中或重新运行查询两次(即SELECT * FROM Bla WHERE Bla.Column IN(...)和SELECT TOP 1 *从Bla)?重新运行将结果存储在表变量中的查询?

这两种解决方案哪一种更好和/或更快?

回答

0

没有 “干净” 的,说实话,真的

SELECT * INTO #foo FROM Bla WHERE Bla.Column IN (...) 
IF @@ROWCOUNT = 0 
    SELECT TOP 1 * FROM Bla 
ELSE 
    SELECT * FROM #foo 

这段代码的目的

  • 触摸布拉尽可能少的时间尽可能
  • 返回一个记录

它可以在一个UNION ALL中使用NOT IN或EXISTS来完成,但这意味着更多地接触Bla。我不确定这是你的选项1还是2 ...

相关问题