[解決済み] PostgreSQLのインデックス使用状況分析
2023-01-25 13:54:15
質問
Postgres を分析し、どのインデックスを作成すべきか、どの未使用のインデックスを削除すべきかを判断するツールまたは方法はありますか? 私は SQLServer 用の "profiler" ツールでこれを行う経験が少しありますが、Postgres に含まれる同様のツールは知りません。
どのように解決するのですか?
欠落しているインデックスを見つけるために、このような方法があります。
SELECT
relname AS TableName,
to_char(seq_scan, '999,999,999,999') AS TotalSeqScan,
to_char(idx_scan, '999,999,999,999') AS TotalIndexScan,
to_char(n_live_tup, '999,999,999,999') AS TableRows,
pg_size_pretty(pg_relation_size(relname :: regclass)) AS TableSize
FROM pg_stat_all_tables
WHERE schemaname = 'public'
AND 50 * seq_scan > idx_scan -- more than 2%
AND n_live_tup > 10000
AND pg_relation_size(relname :: regclass) > 5000000
ORDER BY relname ASC;
これは、インデックススキャンよりもシーケンススキャンの方が多いかどうかをチェックします。Postgresはテーブルに対してシーケンススキャンを好むようですので、テーブルが小さい場合、それは無視されます。
上記のクエリはインデックスがないことを明らかにします。
次のステップは、欠落している結合インデックスを検出することです。これは簡単ではありませんが、実行可能です。遅いクエリを分析するとか......。私は pg_stat_statements が役立つと聞いたのですが...
関連
-
[解決済み] SQLサーバーでNULL = NULLがfalseに評価される理由
-
[解決済み] PostgreSQLの場合。PostgreSQLのテーブルを表示する
-
[解決済み] PostgreSQLの "DESCRIBE TABLE"
-
[解決済み] PostgreSQL コマンドラインユーティリティ: psql を終了する方法
-
[解決済み] PostgreSQLのユーザーパスワードを変更する方法を教えてください。
-
[解決済み] どのバージョンのPostgreSQLを使用していますか?
-
[解決済み] PostgreSQLからのPL/pgSQL出力をCSVファイルに保存する
-
[解決済み] SQL Server における DateTime2 と DateTime の比較
-
[解決済み】Mac OS XでPostgreSQLサーバーを起動するには?
-
[解決済み】psql: FATAL: ロール "postgres" が存在しない
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
MySQL】1136 - 列数が1行目の値数と一致しない問題を解決
-
[解決済み] SQLの結合形式 - 入れ子になった内側join
-
[解決済み] MongoDBに "like "を使ってクエリを実行する方法
-
[解決済み] SQLのSELECTでIF...THENを実行するにはどうすればよいですか?
-
[解決済み] 最初の行への結合方法
-
[解決済み] postgres: ユーザーをスーパーユーザーにアップグレードしますか?
-
[解決済み] SQL ServerにおけるINSERT OR UPDATEに関する解決策
-
[解決済み] mysqldumpで特定のテーブルをスキップする
-
[解決済み] DISTINCTでCOUNT(*)を選択する
-
[解決済み] "ON UPDATE CASCADE "を使用する場合について