我处于需要多次运行相同查询的情况。我必须查看返回的行之一是否对应于特定值(查询1),否则,我必须返回结果集的第一行(查询2)。在SQL Server 2008中,我想知道什么是最好的:运行查询并将结果存储在表变量中或重新运行查询两次(即SELECT * FROM Bla WHERE Bla.Column IN(...)和SELECT TOP 1 *来自Bla)?
两种解决方案中哪一种更好和/或更快?
答案 0 :(得分: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 ......