我们都知道,表中的行数可以通过聚合函数计数计数()。如果你需要计算行数每桌(DBA可能有这样的要求),我们必须生成每个表的动态SQL语句并执行它计数()函数,所以我们可以得到的结果。我见过一个很好的解决互联网之前,忘了出处,写下来和大家分享它。

该方法利用系统表sysindexes提供的行字段。行字段记录的索引的数据的行数。为解决代码如下:

复制代码代码如下所示:

选择schema_name(t.schema_id){ }为图式,T. Name为表名,i.rows为{行}

从sys.tables T,还是一样的我

在t.object_id = i.id和i.indid < = 1



该方法将sys.tables查看,发现桌上的名字和schema_id,并获取该表的架构名称通过schema_name功能。过滤条件i.indid <= 1只选择聚集索引或堆,每桌都至少有一堆或聚集索引,从而保证一行返回的每个表。以下是我在AdventureWorks数据库运行查询的结果。

复制代码代码如下所示:

模式表的行数

----……---- ----—

销售店701

生产productphoto 101

生产productproductphoto 504

销售storecontact 753

个人地址19614

生产productreview 4

生产交易记录113443

6人addresstype



这种方法的优点如下:

1。跑步的速度很快。

2。因为没有访问用户表,所以不会将锁放在用户表上,并且不会影响用户表的性能。

三.你可以写查询作为子查询,CTE,或观点,并把它与其他的查询组合。