我可以运行哪个最便宜的查询来查看表中是否有任何行?

时间:2010-08-09 16:17:55

标签: tsql

我一直在使用sp_MSforeachtable内置存储过程来确定数据库中每个表的行数,使用COUNT(*)。

我已经意识到,我只想要一个0或1,这取决于表中是否有任何行。

我可以使用的其他东西比COUNT(*)更快/更便宜吗?

5 个答案:

答案 0 :(得分:8)

考虑这个问题。 EXISTS会在找到第一场比赛时停止执行。

IF EXISTS (SELECT 1 FROM MyTable)
BEGIN
   print 'at least one!'
END
ELSE
BEGIN
   print 'no rows found in table'
END

答案 1 :(得分:3)

这将打印所有至少有一行的表名

exec sp_MSforeachtable 'if  exists (select 1 from ?) print ''?'''

答案 2 :(得分:0)

也许只抓住第一行,然后显示1?

select top 1 1 from tablename

答案 3 :(得分:0)

SELECT TOP 1 ID FROM TABLE

然后,您可以在返回记录集时进行EOF检查。

答案 4 :(得分:0)

sp_spaceused可能比COUNT(*)更有效。

请注意,它不会实时更新,因此在所有情况下可能都不会100%准确。