当社のOracleデータベースアプリケーションは表が含まれていますが、この表はPERSON_NAME
という列が含まれていPERSON
と呼ばれる。また、我々は、このコラムWHEREでOracleの組み込みUPPER関数を使用すると、SELECT文のパフォーマンスが低下しますか?我々は次のSQL文のパフォーマンスを使用する場合
を使用してSELECT
をスピードアップするために、この列にINDEX
を持っているそうです細かい
SELECT *
FROM PERSON
WHERE 1=1
AND PERSON_NAME = ' Yajli '
;
しかしにおける一部ビジネスケース
は、我々は
SELECT *
FROM PERSON
WHERE 1=1
AND UPPER(PERSON_NAME) = UPPER(' YajLi ')
;
しかし、それはこの場合、BADパフォーマンスとSELECTクエリに私たちを導くには、多くのを取るPERSON_NAME
による検索がそう
私たちは、SQL文の次にしよう、大文字と小文字が区別されていないことを確認する必要があります時間
どちらの場合にSELECT
の性能を向上させる方法の任意のヘルプ一緒
* PERSON_NAME
による検索が敏感
01をケースではありません*検索でPERSON_NAME
が大文字と小文字を区別する
'upper(person_name) 'にインデックスを作成できます –
2番目のクエリは既存のインデックスを使用できないため、処理が遅いです。 'UPPER(PERSON_NAME) 'に関数ベースの索引を追加します。 – mathguy