12.3 インデックスのチューニング
インデックスは、実際の条件式や結合キーの読み出しコストを下げる場合だけ追加します。 作成前後のクエリ遅延、入力スループット、メモリ、ストレージを併せて測定します。
テーブル別の確認
| テーブルタイプ | 主キー・アクセス経路 | 追加インデックス |
|---|---|---|
| TAG | 名前と BASETIME に基づくアクセス | 対応する値・メタデータのインデックス |
| LOG | _ARRIVAL_TIME 範囲 | LSM, BITMAP, KEYWORD |
| LOOKUP | PRIMARY KEY | 対応するセカンダリインデックス |
| VOLATILE | 任意の PRIMARY KEY | REDBLACK セカンダリインデックス |
| TRANSACTION | PRIMARY KEY | リレーショナルなセカンダリインデックス |
対応タイプと構文は、各テーブルの章とインデックス構文を確認します。
適用手順
- 遅い SQL の
EXPLAINと結果件数を記録します。 - 条件の選択性と値の分布を確認します。
- 同じ先頭列を持つインデックスがすでにないか確認します。
- 候補を1つ作成し、構築完了を確認します。
- 同じ条件でクエリと入力を再測定します。
- 効果がない、または書き込みコストが大きいインデックスは削除します。
SHOW INDEXES;
SHOW INDEXGAP;インデックス数に対して固定のスループット低下率を当てはめないでください。行サイズ、キー分布、 同時実行、ストレージによって変わるため、運用に近いデータで測定します。
注意事項
- 選択性の低い列を索引化する前にスキャンと比較します。
- インデックス列への関数・型変換でキー範囲を使えなくしていないか確認します。
- 複合インデックスは、頻出する条件の組み合わせと先頭列を基準に設計します。
- 構築中は入力・クエリ負荷と
SHOW INDEXGAPを監視します。 - 未使用インデックスを削除する前に、ピーク負荷やバッチ処理でも不要か確認します。
詳細は TAG、LOG、LOOKUP、VOLATILE、TRANSACTION 各章の「インデックスと性能」を参照してください。
最終更新日