是否有任何东西可以更快地获得NO。表中的行而不是使用计数(1)。此外,有两种情况:

a)当我们想获得否时。表中的行。

b)当我们只想知道是否有一排时。

提前致谢。

有帮助吗?

解决方案

a)您可以从系统表中获取表行计数,1个示例是根据Uri Dimant的 博客文章在这里.

b)我始终使用:

IF EXISTS(SELECT * FROM YourTable)

其他提示

b)当我们只想知道是否有至少一行时。

SELECT TOP 1 myField FROM myTable [WHERE .....]

要知道表中所有行的计数而无需扫描它们,您可以使用

select SUM(row_count) AS row_count
from sys.dm_db_partition_stats
where object_id = object_id('dbo.tblName')
    and index_id < 2

我不确定该方法是否有任何警告。 (大概它可能包括非承诺记录的计数,或者不包括当前交易中所做的更改)

b)Linq-to-SQL生成

EXISTS (SELECT NULL FROM Table....)

a)不

b)您可以使用 exists 功能,仅检查是否有结果并且实际上没有得到结果。

有这种方法,使用sysobjects和sysindexes:

一次计数所有表

过去对我来说很好。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top