explain
データベース内のコマンドをexcuteすることはできません、単に置く、私は許可を持っていません。 私は次の質問を理解しようとしています。
は、最初に変数UPPER()を使用するときにインデックスを使用しますか?
私はこのクエリではtable
でNAME
にインデックスを持っている場合:
select OID
from table
where NAME=UPPER(v1)
and TYPE=v2
and PID=v3
and OID<>v4
and PID =v5`
name
上のOracleの使用率がOID
を選択します(v1は変数ですか)?
私はいくつかの資料を読みましたが、それはどこの条件でNAME
インデックスが使用されないという関数で言います。しかし、upper()は特別な関数なので、前に見たような素材については静かではありません。私はcreate index INDEX_NAME on table(upper(NAME));
を使用して索引を作成する場合
クエリます:ここ
とは@mathguyの答えの後に2番目の質問です
select OID,PID
from table
where PID=v1
and NAME=UPPER(v2)
は、インデックスINDEX_NAMEを使うのか?
上記の質問でインデックスが使用され、クエリが効率的でないため、実行に時間がかかります。
1を説明しlinkですクエリプランは表示されませんか? 2.フルスキャンが必ずしも悪いとは限りません! (例えばテーブルが大きければ) –
意味があれば、はいOracleは 'name'にインデックスを使用します –
あなたが許可に関して言ったことは意味をなさない。あなたは開発者ですか?そうでない場合、なぜインデックスやFTSを気にかけますか?だから私はあなたが開発者だと仮定します。もしそうならば、どのような悪魔(厳しい言い回しには申し訳ありません)があなたを開発者に雇うでしょうが、あなたが説明計画を実行できないようにして、あなたの仕事を正しく行えないようにします。あなたのマネージャーに行き、彼らがそれを変更するかどうかを確認してください。 – mathguy