このようなクエリがあります。大規模なデータセットでoracle sqlのパフォーマンス
私はJpaを使用し、最初の50件の結果のみを取得しますが、200万レコードのテーブルでは時間がかかりすぎます。
パフォーマンスを向上させるにはどうすればよいですか?
SELECT * FROM TRANSACTION
WHERE
(trunc(REQUEST_TIME,'MI') between to_date('1390/01/01 01:01','YYYY/MM/DD HH24:MI','nls_calendar=persian')
and to_date('1396/11/01 01:01','YYYY/MM/DD HH24:MI','nls_calendar=persian'))
and CUSTOMER like '%123%'
and (case when (ERROR_CODE is not null and ERROR_CODE <> 200) then -1
when (ERROR_CODE is not null and ERROR_CODE =200) then 200
else 0 end =0)
and (URL = 'url1')
and (SOURCE like '%123%')
and (ERROR_CODE=200)
and (REQUEST_ID like '%1234%')
あなたの条件は「ERROR_CODE」に矛盾しています。 'CASE'式は特に、' ERROR_CODE'が 'NULL'でなければ一致しません。しかしそれは後の条件で除外されます。 –
テーブルにはどのようなインデックスがありますか? –