変なSQL動作みっけ

外注がひどいSQLを書いてた事をきっかけに

Oracle SQLの変な動作みつけた。

下記のSQL、旧バージョンだと実行計画バグってんのね。

 where data=nvl(:1,:2)

サポートページに行くと既に情報があったから、

詳細は書けないけど。

問題はバグじゃなくこんなSQLを平気で作る人だよね。

引数はAP側でチェックしてからDBに引き渡す。

WASは簡単に台数増やせるけど、

DBはそうはいかない。

これ、基本ですね。

気をつけましょー。

ちなみにサポートページの文書番号は135240番でっす。

 

nvlはOracle使いしかわからないから親切じゃなかったので追記。

mysqlで言うifnullですね。

引数なんだからAP側で引数の変換処理をして、

DBにはできるだけ単純な処理をさせましょうね。