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