dポイントプレゼントキャンペーン実施中!

いつもお世話になっています。
PL/SQLでストアドを作成中なのですが、
あるUPDATE分のWHERE句の条件として“IS NULL”を使用したいのですが、監督者から “IS NULL”はNGという指示が出てしまい困っています。
(理由はNULLは索引の対照外だからということです。)
以前、“IS NOT NULL”の代用として、“項目名 ≧ 0”が使えることを学んだのですが、“IS NULL”にも同じように代用できる条件の記述方法はありますか?
“IS NOT NULL”が“項目名 ≧ 0”なら
“IS NULL”は“項目名 < 0”というのは無謀でしょうか?

A 回答 (2件)

こんにちは。



確かに「IS NULL」は、INDEXを使いませんが、
NULLかどうかを判断するなら、仕方がないと思います・・・。
「NVL」で変換すれば何とかなりそうですが、レスポンス的には意味がありません・・・。
WHERE句の条件としてNULLを使用できないのなら、元のテーブル構造に問題があると言わざるを得ません・・・。

この場合はいたしかたないかと・・・。
(^^ゞ
    • good
    • 0

EXISTS は確かインデックスを使用したような・・・




UPDATE TABLE1
SET FIELD1 = 'HOGE'
WHERE FIELD2 IS NULL;

の代用として

UPDATE TABLE1 T1
SET FIELD1 = 'HOGE'
WHERE NOT EXISTS (SELECT T2.任意フィールド FROM TABLE1 T2 WHERE T2.FIELD2 >=0 AND T2.キー項目 = T1.キー項目);

ではダメでしょうか?
(パフォーマンスとかは未チェックですが・・・)
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!