![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67)
いつもお世話になっています。
PL/SQLでストアドを作成中なのですが、
あるUPDATE分のWHERE句の条件として“IS NULL”を使用したいのですが、監督者から “IS NULL”はNGという指示が出てしまい困っています。
(理由はNULLは索引の対照外だからということです。)
以前、“IS NOT NULL”の代用として、“項目名 ≧ 0”が使えることを学んだのですが、“IS NULL”にも同じように代用できる条件の記述方法はありますか?
“IS NOT NULL”が“項目名 ≧ 0”なら
“IS NULL”は“項目名 < 0”というのは無謀でしょうか?
No.1ベストアンサー
- 回答日時:
こんにちは。
確かに「IS NULL」は、INDEXを使いませんが、
NULLかどうかを判断するなら、仕方がないと思います・・・。
「NVL」で変換すれば何とかなりそうですが、レスポンス的には意味がありません・・・。
WHERE句の条件としてNULLを使用できないのなら、元のテーブル構造に問題があると言わざるを得ません・・・。
この場合はいたしかたないかと・・・。
(^^ゞ
No.2
- 回答日時:
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.キー項目);
ではダメでしょうか?
(パフォーマンスとかは未チェックですが・・・)
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Viewにインデックスは張れ...
-
INDEXの無効化
-
長年放置しているOracleを…なん...
-
SQL*Loaderで、データを加工し...
-
【ANALYZE】 テーブル・インデ...
-
アナライズとインデックス作成...
-
該当データが存在しないときに...
-
SQLの速度を調べるには…
-
postgreSQLのint型は桁数指定が...
-
CLOB型へのINSERT
-
データを削除しても表領域の使...
-
Data Pump で大量データインポ...
-
ORA-00959: 表領域'****'は...
-
検索結果の列数を動的に変更したい
-
datapumpの実行方法について
-
列が255以上のCSVファイルをAcc...
-
DELETE文でFROM句を省略した場合
-
oracleのimpdpでORA-39166
-
グループ単位にCSVファイル...
-
異なるスキーマからデータを抽...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Viewにインデックスは張れ...
-
INDEXの無効化
-
SQL*Loaderで、データを加工し...
-
アナライズとインデックス作成...
-
可変個数のデータはどう納める?
-
テスト環境と本番環境で、DBか...
-
文字列中のスペースを排除する...
-
OracleTextの索引再構築について
-
SQL*LoaderとInsertの違いについて
-
【ANALYZE】 テーブル・インデ...
-
主キー以外の項目にNotNull制約...
-
自動セグメント管理機能について
-
インデックス作成後アナライズ...
-
論理読み込みブロック数とは?
-
SQLのIN句について
-
レスポンスをよくするには?
-
索引作成について
-
ユニークインデックスについて
-
Oracle Databaseのインデックス...
-
インデックスの階層数によるパ...
おすすめ情報