INFORMATION_SCHEMA.TABLESでレコード数を取得する
SQL Serverデータベース内の各テーブルのレコード数をリストするクエリ
このチュートリアルでは、SQL Serverデータベース内の各テーブルのレコード数を取得するクエリについて解説します。2つの方法を紹介します。
方法1:sys.tablesとCOUNT_BIG
SELECT
t.name AS テーブル名,
COUNT_BIG(*) AS レコード数
FROM
sys.tables AS t
WHERE
t.is_ms_shipped = 0
ORDER BY
レコード数 DESC;
解説
sys.tables
は、データベース内のすべてのテーブルに関する情報を格納するシステムテーブルです。COUNT_BIG(*)
は、テーブル内のすべてのレコード数をカウントします。WHERE
句は、システムテーブル (is_ms_shipped = 0
) を除外します。ORDER BY
句は、レコード数に基づいて結果を降順に並べ替えます。
方法2:sp_spaceused
EXEC sp_spaceused @dbname = N'your_database_name';
sp_spaceused
は、データベース内の各テーブルのディスク使用量に関する情報を取得するストアドプロシージャです。@dbname
パラメータは、データベースの名前を指定します。- 結果には、各テーブルのレコード数も含まれます。
補足
- 上記のクエリは、すべてのテーブルのレコード数を取得します。特定のテーブルのみのレコード数を取得したい場合は、
WHERE
句でテーブル名を指定します。 - より詳細な情報を取得するには、
sys.partitions
やsys.indexes
などの他のシステムテーブルを使用できます。
USE your_database_name;
GO
SELECT
t.name AS テーブル名,
COUNT_BIG(*) AS レコード数
FROM
sys.tables AS t
WHERE
t.is_ms_shipped = 0
ORDER BY
レコード数 DESC;
GO
USE your_database_name;
GO
EXEC sp_spaceused @dbname = N'your_database_name';
GO
- 上記のコードは、
your_database_name
を実際のデータベース名に置き換えて実行してください。 - 結果は、テーブル名とレコード数、またはディスク使用量が表示されます。
方法3:sys.partitionsとSUM
SELECT
t.name AS テーブル名,
SUM(ps.rows) AS レコード数
FROM
sys.tables AS t
INNER JOIN
sys.partitions AS ps ON t.object_id = ps.object_id
WHERE
t.is_ms_shipped = 0
GROUP BY
t.name
ORDER BY
レコード数 DESC;
SUM(ps.rows)
は、テーブル内のすべてのパーティションのレコード数を合計します。
方法4:INFORMATION_SCHEMA.TABLES
SELECT
table_name AS テーブル名,
table_rows AS レコード数
FROM
INFORMATION_SCHEMA.TABLES
WHERE
table_type = 'BASE TABLE'
ORDER BY
table_rows DESC;
INFORMATION_SCHEMA.TABLES
は、データベース内のすべてのテーブルに関する情報を格納する仮想テーブルです。table_rows
列には、テーブル内のレコード数が含まれます。
方法5:SSMS GUI
SQL Server Management Studio (SSMS) を使用して、各テーブルのレコード数を取得することもできます。
- SSMS でデータベースに接続します。
- オブジェクトエクスプローラーで、データベースを展開します。
- テーブル フォルダを展開します。
- 各テーブルを右クリックし、プロパティ を選択します。
- ストレージ ページで、レコード数 の値を確認します。
sql-server database