ある会社はAmazon Aurora MySQLを使用して、Webアプリケーションのデータベースを運用しています。クエリの実行計画を解析したところ、頻繁に実行される特定の読み取りクエリでフルテーブルスキャンが発生しており、全体のパフォーマンスを低下させていることが分かりました。アプリケーションコードを変更せずに、クエリのパフォーマンスを劇的に向上させる方法はどれですか。
フルテーブルスキャンが発生する根本原因は、クエリの検索条件に使われるカラムに適切なインデックスが存在しないことです。インデックスはアプリケーションコードを変更せずDB管理者レベルで追加でき、クエリオプティマイザが自動的にインデックス検索を選択するようになります。これはパフォーマンス改善の最も基本的かつ効果的な手法です。 クエリオプティマイザを無効にして全インデックスを強制使用させるパラメータはAurora MySQLには存在せず、オプティマイザを無効化することはクエリプランの最適化を妨げてパフォーマンスをさらに悪化させるリスクがあります。 インスタンスをスケールアップするとフルテーブルスキャンの所要時間が若干短縮される場合がありますが、根本的な解決にはならずデータ量の増加に伴い問題が再発します。コスト面でも非効率な対処法です。 PostgreSQL互換クラスターへの移行は大規模な移行作業とダウンタイムリスクを伴います。同じクエリパターンで同じインデックスがなければ、異なるオプティマイザを使っても同様のパフォーマンス問題が発生します。