[解決済み] SQL Serverデータベースで最大のオブジェクトを見つけるには?
2022-05-13 07:30:46
質問
SQL Server データベースで最大のオブジェクトを見つけるにはどうしたらよいでしょうか。 まず、どのテーブル (および関連するインデックス) が最も大きいかを判断し、次に特定のテーブルのどの行が最も大きいかを判断します (私たちはバイナリ データを BLOB に保存しています)。
この種のデータベース分析を支援するツールはありますか。 または、システム テーブルに対して実行できる簡単なクエリはありますか?
どのように解決するのですか?
私はこの SQL スクリプト (どこかの誰かから入手したもので、誰からのものか再構築できません) を何年も使用しており、インデックスとテーブルのサイズを理解し決定するのに非常に役立っています。
SELECT
t.name AS TableName,
i.name as indexName,
sum(p.rows) as RowCounts,
sum(a.total_pages) as TotalPages,
sum(a.used_pages) as UsedPages,
sum(a.data_pages) as DataPages,
(sum(a.total_pages) * 8) / 1024 as TotalSpaceMB,
(sum(a.used_pages) * 8) / 1024 as UsedSpaceMB,
(sum(a.data_pages) * 8) / 1024 as DataSpaceMB
FROM
sys.tables t
INNER JOIN
sys.indexes i ON t.object_id = i.object_id
INNER JOIN
sys.partitions p ON i.object_id = p.object_id AND i.index_id = p.index_id
INNER JOIN
sys.allocation_units a ON p.partition_id = a.container_id
WHERE
t.name NOT LIKE 'dt%' AND
i.object_id > 255 AND
i.index_id <= 1
GROUP BY
t.name, i.object_id, i.index_id, i.name
ORDER BY
object_name(i.object_id)
もちろん、別の順序付け基準を使うこともできます、例えば
ORDER BY SUM(p.rows) DESC
を使えば、最も多くの行を持つテーブルを取得できます。
ORDER BY SUM(a.total_pages) DESC
で、最も多くのページ(8Kブロック)が使用されたテーブルを取得します。
関連
-
[解決済み】エラー "INSERT EXEC文はネストできません。" "INSERT-EXEC文の中でROLLBACK文は使用できません。" これを解決するにはどうすればよいですか?
-
[解決済み] SQL Server xp_delete_file パラメータ
-
[解決済み] SQL ServerでSELECTからUPDATEする方法とは?
-
[解決済み] SQL Server で複数行のテキストを 1 つのテキスト文字列に連結する方法
-
[解決済み] SQL Server テーブルにカラムが存在するかどうかを確認する方法は?
-
[解決済み] SQL Server の DateTime データ型から日付だけを返す方法
-
[解決済み] SQL ServerにおけるLEFT JOINとLEFT OUTER JOINの比較
-
[解決済み] 外部キーは自動的にインデックスを作成しますか?
-
[解決済み】SQL Serverで既存のテーブルにデフォルト値を持つカラムを追加する
-
[解決済み] SQL ServerでINNER JOINを使用して削除するにはどうすればよいですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】エラー "INSERT EXEC文はネストできません。" "INSERT-EXEC文の中でROLLBACK文は使用できません。" これを解決するにはどうすればよいですか?
-
[解決済み] SSRS レポートの定義が無効です。
-
[解決済み] sp_columnsが結果を返さないのはなぜですか?
-
[解決済み] SSISで新しいレコードを挿入する前に、宛先テーブルを空にするにはどうすればよいですか?
-
[解決済み] データ損失の可能性があるため、スキーマの更新を終了します。
-
[解決済み] SQL Server : ログインに成功しましたが、「データベース [dbName] にアクセスできません。(ObjectExplorer) "と表示されました。
-
[解決済み] すべてのテーブル、すべてのカラムを特定の値で検索する SQL Server [重複]。
-
[解決済み] SQLのReplace関数内の正規表現?
-
[解決済み] SQL Serverでマテリアライズド・ビューを作成する方法は?
-
[解決済み] SQL Serverは、ビュークエリでLEFT JOINをLEFT OUTER JOINに置き換えます。