SQL Serverでレコード件数を調べる方法
テーブルのレコード件数を調べる方法としてまず思いつくのがcount関数ですが、件数が膨大なテーブルに対して実行した場合、結果が返ってくるまでに時間がかかります。
SELECT
count(*) as [行数]
FROM
[テーブル名]
count以外でレコード数を取得する方法について調べてみました。
sp_spaceused
システム ストアド プロシージャのsp_spaceusedを使ってレコード数を取得できます。
sp_spaceused (Transact-SQL) - SQL Server | Microsoft Docs
EXEC sp_spaceused [テーブル名]
sys.partitions
システム カタログ ビューを使用して、データベース内の全テーブルの行の概数を取得できます。
sys. partitions (Transact-sql SQL) - SQL Server | Microsoft Docs
SELECT
obj.name as [テーブル名]
,sum(par.rows) as [行の概数]
FROM
sys.objects as obj
INNER JOIN
sys.partitions as par
ON obj.object_id = par.object_id
WHERE
obj.type = 'U'
and par.index_id < 2
GROUP BY
obj.name
ORDER BY
obj.name
テーブルがパーティション分割されている場合、パーティションごとの行の概数も取得できます。
SELECT
obj.name as [テーブル名]
,par.partition_number as [パーティション番号]
,par.rows as [行の概数]
FROM
sys.objects as obj
INNER JOIN
sys.partitions as par
ON obj.object_id = par.object_id
WHERE
obj.type = 'U'
and par.index_id < 2
ORDER BY
obj.name
,par.partition_number
sys.sysindexes
sys.sysindexesを使用して行数を取得もできますが、sys.sysindexesは将来サポートされなくなるようです。
sys.sysindexes (Transact-SQL) - SQL Server | Microsoft Docs
この機能は、Microsoft SQL Server の将来のバージョンで削除されます。 新規の開発作業ではこの機能を使用しないようにし、現在この機能を使用しているアプリケーションは修正することを検討してください
SELECT
obj.name as [テーブル名]
,ind.rows as [行数]
FROM
sys.objects as obj
INNER JOIN
sys.sysindexes as ind
ON obj.object_id = ind.id
WHERE
obj.type = 'U'
and ind.indid < 2
ORDER BY
obj.name
Author And Source
この問題について(SQL Serverでレコード件数を調べる方法), 我々は、より多くの情報をここで見つけました https://qiita.com/fuk101/items/90f257ef968097d01d60著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .