is nullを使ったSQLのチューニング方法

ここでは、is nullを使ったSQLのチューニング方法を紹介します。

is nullを使用するケース

例えば、empテーブルのbusyo_cdが10,20,30,40,50,nullのとき、busyo_cdが設定されていないデータを取得する場合です。

・is nullを使うケース
 select * from emp where busyo_cd is null;

主に、項目が空、未設定のデータを検索するときに使います。

is nullを使ったSQLをチューニングする方法

ここからはis nullを使ったSQLのチューニング方法を紹介します。

is nullのSQLをチューニングするには、is nullをやめる必要があります。

is nullをやめる

is nullをやめるには、NULL値の代わりに何かデータを設定する方法があります。

例えば、NULL値の代わりに半角スペースを埋めたり、0を埋めたり、999999というような値やシステムや業務の仕様上絶対発生しないXXXXXXというような値を設定することで回避することが出来ます。

ただし、きちんとシステムの中でルールを決めておかないとシステムエラーや障害の原因になりやすいです。

データの変更が出来ない場合は、ファンクションインデックスとNVL関数の合わせ技も試すことが出来ます

例えば、ファンクションインデックスの項目に、NVL(busyo_cd,0)としてしておきます。

そしてselect * from emp where NVL(busyo_cd,0) = 0とすることで、busyo_cdがNULLの値を0にしつつ、インデックス検索も行うことが出来ます。

ファンクションインデックス自体をあまり使っているケースを見たことがないので、現場では事前に確認が必要です。

最後に

nullデータを置き換えるというのは、データの変更を伴うので、アプリケーションの単体テストでは事足りず、テスト工数が大きくなり、現実には、変更できないケースも多いと思います。

そういったケースでは、他に改善できる箇所を探してチューニングすることになります。SQLのチューニングについては、「SELECT文のSQLチューニング方法まとめ」で詳しく解説していますので、ぜひ参考にしてください。