我一直在使用sp_MSforeachtable
内置存储过程来确定数据库中每个表的行数,使用COUNT(*)。
我已经意识到,我只想要一个0或1,这取决于表中是否有任何行。
我可以使用的其他东西比COUNT(*)更快/更便宜吗?
答案 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%准确。