
いつもお世話になっています。
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
- 1 PL/SQLでフェッチでNULLの項目について
- 2 Is NULLを使わず、NULL項目をWhere条件で取得する方法
- 3 ストアドをSQL*PLUSで実行したい。
- 4 PL/SQL ストアドプロシージャが実行できません
- 5 SQL*Plus内でPL/SQL、SQLを実行するシェルスクリプトを書
- 6 SQL、ストアドでのUPDATEのアドバイスを下さい。
- 7 【PL/SQL】CURSOR ・・・ IS SELECT・・・FOR UPDATE が機能しない
- 8 PL/SQLからディレクトリ作成
- 9 PL/SQL PLS-00103エラーについて
- 10 PL/SQLでPLS-00201のエラー
関連するカテゴリからQ&Aを探す
おすすめ情報
人気Q&Aランキング
-
4
文字列中のスペースを排除する...
-
5
INDEXの無効化
-
6
SQLLOADERについて
-
7
主キー以外の項目にNotNull制約...
-
8
OracleTextの索引再構築について
-
9
IS NULL
-
10
一括更新の際のロールバックセ...
-
11
oracle10g統計情報取得の確認方法
-
12
アナライズとインデックス作成...
-
13
論理読み込みブロック数とは?
-
14
索引の再構築をすべき?
-
15
データ表示順序
-
16
Oracleでの登録するユーザーと...
-
17
ACCESSのVBAを利用して、Excel...
-
18
特定のスキーマのテーブルを一...
-
19
異なるスキーマからデータを抽...
-
20
count(1)とcount(*)の違い
おすすめ情報