indexStats() (インデックス使用統計)
最終更新:2026-10-09
indexStats() (インデックス使用統計)
indexStats() はインデックスごとの使用統計を報告します。例: `db.users.indexStats()` では、各インデックスのアクセス数、ヒット/ミスの集計などを取得できます。使われていないインデックスを見つけて削除し、書き込み増幅とストレージを削減するのに役立ちます。カウンタはサーバーが最後に起動した時点、またはインデックスが再構築された時点から累積されることに注意してください。
| カテゴリ | インデックスと管理 |
|---|---|
| MongoDB バージョン | 1.0+ |
| 例の言語 | mongosh(シェル) |
📝 構文
db.<collection>.indexStats()
戻り値:name、accesses、hits、misses を持つインデックス統計の配列。
▶ 例
以下のコマンドをローカルの mongosh で実行してください(mongod が起動済みである必要があります):
// indexStats: 各インデックスの使用頻度を確認する
const stats = db.users.indexStats()
stats.forEach(s => print(s.name + ': ' + s.accesses.ops + ' ops'))
出力:
_id_: 120 ops
age_1: 45 ops
email_1: 3 ops
📌 注意事項
- アクセスゼロのインデックスは削除を検討し、書き込み増幅を減らす
- カウンタはサーバー再起動またはインデックス再構築でリセットされる
- サーバーのメトリクス収集の有効化が必要
🏷️ 関連タグ
💡 関連ケース
さらなる実践ケースを近日公開予定。
📚 関連チュートリアル
❓ よくある質問
QindexStats で未使用インデックスを見つけられますか?
Aできます。accesses.ops がゼロまたはほぼゼロのインデックスはほとんど使われておらず、削除候補です。
QindexStats のカウンタはいつから始まりますか?
Aサーバーが最後に起動した時点、またはインデックスが再構築された時点から累積されます。
Q未使用インデックスの削除の利点は?
A挿入/更新時の書き込み増幅が減り、ディスクとメモリが解放されます。