コンテンツにスキップ
12.3 インデックスのチューニング

12.3 インデックスのチューニング

インデックスは、実際の条件式や結合キーの読み出しコストを下げる場合だけ追加します。 作成前後のクエリ遅延、入力スループット、メモリ、ストレージを併せて測定します。

テーブル別の確認

テーブルタイプ主キー・アクセス経路追加インデックス
TAG名前と BASETIME に基づくアクセス対応する値・メタデータのインデックス
LOG_ARRIVAL_TIME 範囲LSM, BITMAP, KEYWORD
LOOKUPPRIMARY KEY対応するセカンダリインデックス
VOLATILE任意の PRIMARY KEYREDBLACK セカンダリインデックス
TRANSACTIONPRIMARY KEYリレーショナルなセカンダリインデックス

対応タイプと構文は、各テーブルの章とインデックス構文を確認します。

適用手順

  1. 遅い SQL の EXPLAIN と結果件数を記録します。
  2. 条件の選択性と値の分布を確認します。
  3. 同じ先頭列を持つインデックスがすでにないか確認します。
  4. 候補を1つ作成し、構築完了を確認します。
  5. 同じ条件でクエリと入力を再測定します。
  6. 効果がない、または書き込みコストが大きいインデックスは削除します。
SHOW INDEXES;
SHOW INDEXGAP;

インデックス数に対して固定のスループット低下率を当てはめないでください。行サイズ、キー分布、 同時実行、ストレージによって変わるため、運用に近いデータで測定します。

注意事項

  • 選択性の低い列を索引化する前にスキャンと比較します。
  • インデックス列への関数・型変換でキー範囲を使えなくしていないか確認します。
  • 複合インデックスは、頻出する条件の組み合わせと先頭列を基準に設計します。
  • 構築中は入力・クエリ負荷と SHOW INDEXGAP を監視します。
  • 未使用インデックスを削除する前に、ピーク負荷やバッチ処理でも不要か確認します。

詳細は TAG、LOG、LOOKUP、VOLATILE、TRANSACTION 各章の「インデックスと性能」を参照してください。

最終更新日