[SQL Server] 全テーブルのデータ件数を一度に取得するクエリ

inno
2014-04-13 20:09 19128 0
[SQL Server] 全テーブルのデータ件数を一度に取得するクエリ

全テーブルのデータ件数を取得する方法は簡単だ。
該当データベースから下記のSQLを実行すると
そのデータベースの存在するテーブルに対してテーブル名とデータ件数が取得できる。
またCOUNT(*)を使うより応答速度が早い!

SELECT A.name AS TableName, B.rows 
FROM sys.objects AS A
JOIN sys.sysindexes AS B
ON A.object_id = B.id AND B.indid < 2
WHERE A.type = 'U'
ORDER BY A.name

実行結果



また特定のテーブルのみデータ件数を取得したい場合は下記のように作成する。

SELECT A.name AS TableName, B.rows 
FROM sys.objects AS A
JOIN sys.sysindexes AS B
ON A.object_id = B.id AND B.indid < 2
WHERE A.type = 'U' AND A.name = '[テーブル名]'
ORDER BY A.name

これを元に実際に「tComDay」テーブルの件数を取得する時は下記のように作成する。

SELECT A.name AS TableName, B.rows 
FROM sys.objects AS A
JOIN sys.sysindexes AS B
ON A.object_id = B.id AND B.indid < 2
WHERE A.type = 'U' AND A.name = 'tComDay'
ORDER BY A.name

実行結果



さらに!!!
特定テーブルのみデータ件数を取得ならもっと簡単な方法がある。

EXEC sp_spaceused '[テーブル名]'

また例文として「tComDay」テーブルの件数を取得する時は下記のように作成する。

EXEC sp_spaceused 'tComDay'

実行結果




コメント