【SQL】统计所有表的行数

原文:【SQL】统计所有表的行数

环境:mssql ent 2k8 r2

原理:遍历所有用户表,用sp_spaceused过程分别获取每张表的行数并写入临时表,最后返回临时表

IF OBJECT_ID(‘tempdb..#TableRowCount‘,‘U‘) IS NOT NULL DROP TABLE #TableRowCount
GO
CREATE TABLE #TableRowCount (Name sysname PRIMARY KEY, RowCnt DECIMAL(11,0), Reserved VARCHAR(18), Data VARCHAR(18), Index_Size VARCHAR(18), Unused VARCHAR(18))
GO
DECLARE curCntAllTableRows CURSOR LOCAL FAST_FORWARD FOR
        SELECT name FROM sys.tables
OPEN curCntAllTableRows
DECLARE @TableName sysname
FETCH NEXT FROM curCntAllTableRows INTO @TableName
WHILE @@FETCH_STATUS=0
BEGIN
 INSERT INTO #TableRowCount EXEC sys.sp_spaceused @TableName
 FETCH NEXT FROM curCntAllTableRows INTO @TableName
END
CLOSE curCntAllTableRows
DEALLOCATE curCntAllTableRows

SELECT Name,RowCnt FROM #TableRowCount WHERE RowCnt>0
ORDER BY RowCnt DESC,Name

文毕。

时间: 2025-01-01 10:22:47

【SQL】统计所有表的行数的相关文章

ORACLE 统计查看每一个表的行数

create or replace procedure sp_static_tab /**   * 统计所有表的行数   */is vv_table_name varchar2(64);   vi_table_rows number;  vv_sqlstr     varchar2(200);  cursor r_cursor is select table_name from user_tables  where substr(table_name,1,3)<>'BIN';  begin E

oracle 统计指定条件下所有表的行数

今天 需要统计下指定用户下的所有表的行数,于是采用了oracle 内置视图: select table_name,num_rows  from dba_tables where owner = 'USERNAME';  或 select table_name,num_rows from user_all_tables ; 可是统计结果发现,有的表的统计数量和实际数量有差异,因此,直接自己写了个统计指定条件下表的记录的sql: --创建一个表用于存储计算结果 create table t_temp

sqlserver查询所有表的行数的sql语句

原文:sqlserver查询所有表的行数的sql语句 select a.name, b.rows  from sysobjects a inner join sysindexes b on a.id = b.id where a.type = 'u'   and b.indid in (0, 1)order by a.name

Oracle统计用户所有表的行数

DECLARE   CURSOR c1 is select table_name from user_tables;   V_TABLE_NAME user_tables.TABLE_NAME%TYPE;   V_CNT number;   V_SQL varchar2(2000); BEGIN   FOR V_TABLE_NAME in c1 loop      V_SQL := 'select count(1) from ' || V_TABLE_NAME.table_name;      

7.04 求一个表的行数

问题:计算一个表的行数,或计算某个列中值的个数.例如,找到职员总数以及每个部门的职员数.解决方案:如果以整个表作为一个组或一个窗口计算行数,则只需使用COUNT函数及"*"字符:select count(*) from emp; 如果要创建多个数据组或窗口,则使用COUNT函数的同时,还要使用GROUP BY子句:select deptno,count(*) from emp group by deptno;

c语言:实现一个函数,打印乘法口诀表,口诀表的行数和列数自己指定

实现一个函数,打印乘法口诀表,口诀表的行数和列数自己指定, 输入9,输出9*9口诀表,输出12,输出12*12的乘法口诀表. 程序: #include<stdio.h> void mul(int n)//multiplication 乘法 { int i, j; for (i = 1; i <= n; i++) { for (j = 1; j <= i; j++) { printf("%d*%d=%-2d  ", i, j, i*j); //其中%2d中的2表示

Android Stduio统计项目的代码行数

android studio统计项目的代码行数的步骤如下: 1)按住Ctrl+Shift+A,在弹出的框输入‘find’,然后选择Find in Path.(或者使用快捷键Ctrl+Shift+F) 2)在弹出Find in Path的框中的Text to find输入\n,接着勾选Regular expression(正则表达式),Context选择anywhere, Scope根据你想要统计的范围进行选择,File mask选择*.java.(在这里统计项目的Java的代码行数) 3)下图的

SQLSERVER中统计所有表的记录数

利用系统索引表sysindexes中索引ID indid<1的行中的rows列存有该表的行数这一特点.    最后一种方法是利用隐藏未公开的系统存储过程sp_MSforeachtable CREATE TABLE #temp (TableName VARCHAR (255), RowCnt INT) EXEC sp_MSforeachtable 'INSERT INTO #temp SELECT ''?'', COUNT(*) FROM ?' SELECT TableName, RowCnt F

查看SqlAzure和SQLServer中的每个表数据行数

SqlAzure中的方式: select t.name ,s.row_count from sys.tables t join sys.dm_db_partition_stats s ON t.object_id = s.object_id and t.type_desc = 'USER_TABLE' and t.name not like '%dss%' and s.index_id = 1 order by row_count desc SQLServer的方式: select a.name