SQLの最適化とは、このSQLの実行計画をチューニングすることを指します。
計画のチューニングでは通常、次の2つの問題に直面します:
プラン空間が小さすぎるため、オプティマイザーが選択できる実行計画が十分に良くなく、実際にはSQLが常に遅いままです。
プラン空間が大きすぎると、オプティマイザーがパフォーマンスの悪い実行計画を誤って選択する可能性があります。実際には、SQLがジッター現象を起こし、時速速く時速遅くなり、極端な場合はクラスタ全体に影響を及ぼし、CPUをフル稼働させます。
プラン空間が小さい場合、一般的な最適化方法は適切なインデックスを追加することです。これにより、ベーステーブルへのパスの選択肢が増え、プラン空間が拡大します。インデックスの選択と最適化を十分に理解していれば、これは比較的容易に実現できます。一方、プラン空間が大きすぎる場合、オプティマイザーが適切な計画を選択する難易度が高くなります。一般的なチューニング方法は、ヒントを追加してオプティマイザーの計画選択を制御することです。
実際には、OceanBaseデータベースでは、より良いインデックスを設計することで、オプティマイザーがルールに従って多くの不良な実行計画をカットし、ジッター現象の発生を回避することもできます。