インデックス問題の解決方法

一部のクエリの実行速度が期待値に達しない場合、オプティマイザーがクエリを実行するために間違ったインデックスを選択している可能性があります。

まず統計のテーブルの健全性状態を確認し、次にさまざまなヘルス状態に応じてこの問題を解決します。

健康状態が低い

ヘルス状態が低いということは、TiDB がANALYZEステートメントを長時間実行していないことを意味します。3 ANALYZEコマンドを実行すると、統計を更新できます。更新後もオプティマイザーが間違ったインデックスを使用する場合は、次のセクションを参照してください。

ほぼ100%の健康状態

ほぼ 100% のヘルス状態は、 ANALYZEステートメントが完了したばかりか、少し前に完了したことを示しています。この場合、間違ったインデックスの問題は、TiDB の行数の推定ロジックに関連している可能性があります。

同等性クエリの場合、原因はカウントミニマムスケッチある可能性があります。Count-Min Sketch が原因であるかどうかを確認し、対応する解決策を実行できます。

上記の原因が問題に当てはまらない場合は、 USE_INDEXまたはuse indexオプティマイザーヒントを使用してインデックスを強制的に選択できます (詳細については使用インデックスを参照)。また、 SQL プラン管理使用して非侵入的な方法でクエリの動作を変更することもできます。

その他の状況

前述の状況以外にも、データの更新によってすべてのインデックスが適用できなくなり、間違ったインデックスの問題が発生することもあります。このような場合は、条件とデータ分布を分析して、新しいインデックスによってクエリが高速化されるかどうかを確認する必要があります。高速化できる場合は、 ADD INDEXコマンドを実行して新しいインデックスを追加できます。

このページは役に立ちましたか?