web-dev-qa-db-ja.com

すべてのテーブルの行を一度にカウントする

SQL Server 2005を使用していますが、すべてのテーブルのリストを各テーブルのレコード数とともに取得する方法を知りたいです。

sys.tablesビューを使用してテーブルのリストを取得できることはわかっていますが、カウントを見つけることができません。

ありがとうございました

16
Allain Lalonde

ここから: http://web.archive.org/web/20080701045806/http://sqlserver2000.databases.aspfaq.com:80/how-do-i-get-a-list-of-sql -server-tables-and-their-row-counts.html

SELECT 
    [TableName] = so.name, 
    [RowCount] = MAX(si.rows) 
FROM 
    sysobjects so, 
    sysindexes si 
WHERE 
    so.xtype = 'U' 
    AND 
    si.id = OBJECT_ID(so.name) 
GROUP BY 
    so.name 
ORDER BY 
    2 DESC
40
brian

その価値のために、sysindexesシステムテーブルはSQL 2008で非推奨になりました。上記は引き続き機能しますが、SQL2008システムビューで今後機能するクエリを次に示します。

select
schema_name(obj.schema_id) + '.' + obj.name,
row_count
from (
    select
        object_id,
        row_count = sum(row_count)
    from sys.dm_db_partition_stats
    where index_id < 2  -- heap or clustered index
    group by object_id
) Q
join sys.tables obj on obj.object_id = Q.object_id
22
Tom Wilson

Sysindexes.rowsは行数の概算であると付け加えるかもしれません。 DBCC UPDATEUSAGE より正確な値が必要な場合。この問題は、4700万から5000万行を超えるテーブルを持つDBで発生し、それぞれから約50万行が失われたと考えました。

5
Kev

おそらくこのようなもの:

SELECT 
    [TableName] = so.name, 
    [RowCount] = MAX(si.rows) 
FROM 
    sysobjects so, 
    sysindexes si 
WHERE 
    so.xtype = 'U' 
    AND 
    si.id = OBJECT_ID(so.name) 
GROUP BY 
    so.name 
ORDER BY 
    2 DESC

http://web.archive.org/web/20080701045806/http://sqlserver2000.databases.aspfaq.com:80/how-do-i-get-a-list-of-sql-server- Tables-and-their-row-counts.html

3
Paul Lefebvre

これは私の方法です:

create table #rowcount (tablename varchar(128), rowcnt int)
exec sp_MSforeachtable 
   'insert into #rowcount select ''?'', count(*) from ?'
select * from #rowcount
    order by tablename
drop table #rowcount

チャームのように機能します

1
joaopintocruz

これらすべての方法で、selectクエリの結果セットの行数がわかります。 SSMSには、次の方法でオブジェクトの詳細を表示するオプションもあります: "Object Explorer Details"ペイン。これは2005年以降のすべてのバージョンで利用可能です

Object Explorer Detailsは、SQL Server ManagementStudioのコンポーネントです。サーバー内のすべてのオブジェクトの表形式のビューを提供し、それらを管理するためのユーザーインターフェイスを提供します。

「オブジェクト詳細ウィンドウ」にアクセスするには:「オブジェクトエクスプローラー」ペインで詳細を表示するオブジェクトをクリックし、F7を押します。続きを読む: https://technet.Microsoft.com/en-us/library/ms191146(v = sql.90).aspx

長所:

  1. SQL Serverがこの情報を格納するため、selectクエリよりもはるかに高速です
  2. 毎回selectクエリを書き込んだりコピーして貼り付けたりする必要はありません-F7が1つだけ離れています
  3. 行数だけでなく、より多くの情報を提供します

注:デフォルトでは、[オブジェクトの詳細]ペインに行数が表示されない場合があります。列ヘッダーをクリックして取り込むことができます。

1
Deepanshu Kalra