与SQL Server一起使用时,哪些查询更快?

时间:2014-02-26 04:51:50

标签: sql sql-server

我想检查一个表是否包含一行。哪个更快?

IF EXISTS(SELECT * FROM TABLE)

IF EXISTS(SELECT TOP 1 * FROM TABLE)

3 个答案:

答案 0 :(得分:1)

查询之间没有区别!

不会评估select中的列。 如果您还记得逻辑查询处理,则首先执行from子句。 select子句在最后一步执行(实际上是Order By,但这是一个美化的东西)。

因此,当执行from子句时,无论列名如何,都会返回行。 您必须添加列名,否则会出现语法错误

答案 1 :(得分:-1)

显然SELECT TOP 1 * FROM TABLE更快。

由于索引扫描减少到1,因此返回的行数为1 估计的运营成本也要低得多。

但如果表中只有行,则两个查询都会显示相同的操作成本。

SELECT * 
FROM (SELECT top 1 * 
      FROM ms_data)  temp  
SELECT TOP 1 * 
FROM ms_data

上述两个查询都有相同的运营成本。

答案 2 :(得分:-1)

IF EXISTS(SELECT 1 FROM TABLE)

更快

还有一些建议

IF EXISTS(SELECT null FROM TABLE)