代码之家  ›  专栏  ›  技术社区  ›  HotTester

是否有比表A中的count(1)更快的代码来查找行计数?

  •  2
  • HotTester  · 技术社区  · 15 年前

    有没有什么东西可以让我们更快地得到表中的行数而不是使用count(1)。此外,还有两种情况:

    a)当我们想要得到表中的行数时。

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

    事先谢谢。

    6 回复  |  直到 15 年前
        1
  •  2
  •   AdaTheDev    15 年前

    a) 您可以从系统表中获取表行计数,1个示例是根据URI dimant的 blog post here .

    b) 我总是使用exists:

    IF EXISTS(SELECT * FROM YourTable)
    
        2
  •  2
  •   shahkalpesh    15 年前

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

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

        3
  •  2
  •   Martin Smith    15 年前

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

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

    我不确定这种方法是否有任何警告。(可能包括未提交记录的计数,也可能不包括在当前事务中所做的更改)

        4
  •  1
  •   cjk    15 年前

    b)Linq to SQL生成

    EXISTS (SELECT NULL FROM Table....)
    
        5
  •  1
  •   Guffa    15 年前

    A)没有。

    b)您可以使用 exists 函数,它只检查是否有结果,而实际上没有得到结果。

        6
  •  0
  •   Community Mohan Dere    9 年前

    使用SysObjects和SysIndexes有以下方法:

    Counting rows for all tables at once

    过去对我很有效。