【くえりさいてきか】
クエリ最適化 とは?
最終更新:
💡 欲しい結果はそのままに、SQLの仕事を減らす
データベースの問い合わせを、必要な結果を保ちながら効率よく実行すること。実行計画や統計情報を調べ、索引・問い合わせの書き方などを検討し、変更前後を比較します。
📌 このページのポイント
SQLが遅いときは、索引を足せばいい?
データベースも選んでくれるんだよね?
うん。プランナーは索引や結合順などを選ぶため、行数や値の分布といった統計を使う。例えばPostgreSQLではANALYZEで統計を更新できるよ。推定と実際の行数が大きくずれていないかも、手がかりになるんだ。
EXPLAINなら、実行しないで調べられる?
通常のEXPLAINは計画を表示する。一方、PostgreSQLのEXPLAIN ANALYZEは実際に問い合わせを実行して計測するよ。更新や削除も実行されるため、検証環境や副作用を確認して使おう。画面に結果の行が出ないから安全、とは限らないんだ。
書き換えれば、必ず速くなる?
索引や取得する列、結合の仕方を検討できるけど、万能な書き換えはない。重複行やNULLなどの扱いを変えず、同じ条件で結果と時間を比べよう。索引にも更新時の処理や容量の負担があるので、ほかの問い合わせも含めて効果を確認するんだ。
📖 おまけ:英語の意味
「Query Optimization」 = 問い合わせの最適化
💬 データベースが実行方法を選ぶ処理と、人が問い合わせや索引などを調整する作業の両方で使われます。「必ず最速の方法が得られる」という保証ではありません。