SQLにヒント句を追加するリスクやデメリット

どうも。

ここでは、SQLにヒント句を追加するリスクやデメリットを簡単に紹介します。

そもそもヒントとはどんなものか知らないという方は、まず「ヒントとは」をご覧ください。

ヒントをつけることで、より狙い通りの実行計画に近づけることが出来ます。

絶対に記述通りの実行計画になる訳ではない

その名の通り、ヒントは、あくまで”ヒント”でしかないのです。
最終的にSQLの実行計画を決定するのは、ORACLEオプティマイザです。

特に、SQLで参照しているテーブルの数が多い場合や副問合せなどが多く、SQLが複雑化している場合には、ヒントを書いていても、その通りの実行計画にならないケースがあります。

データ量の変化やSQLの変化に柔軟に対応できない可能性

日々の運用でデータ量が増加したり、統計情報が変化してきたとき、本来であればORACLEオプティマイザが適切な実行計画を立てることが出来るケースでも、ヒントを書いているがために、逆にそのデータ量では適切ではない実行計画になるという可能性もあります。

また、SQLの一部を修正したとき、抽出条件や結合条件が変わった時も、ヒントをそのままにしおくて、本来の適切な実行計画にならない可能性があります。

ヒントを加えるときは、今後のデータ量の増加やSQLがどのように修正されるか、修正する場合は、どのように修正すべきか、考慮してヒントを書いておくべきです。

まとめ

ある程度、経験を積んでくると、こういう場合には、このヒント!みたいな勘所が分かるようになってきます。
しかし、だからといって、ホイホイとヒントを入れまくるというのは避けた方が良いです。一定のリスクやデメリットも存在するので鑑みて追加していきましょう。

オススメのヒントはこちら「SQLに実装すべき3つのSQLヒント

最後に

最後までお読みいただきありがとうございます。

SQLのチューニングについては、「SELECT文のSQLチューニング方法まとめ」で詳しく解説していますので、ぜひ参考にしてください。