0

このクエリを頻繁に実行しており、最適化したいと考えています。

select
    number || ' ' || name
from tasks
where upper(number || ' ' || name) like '%VALUE%'

インデックスを作成しましたが、インデックスがない場合と同じくらい時間がかかりました

create index name on tasks (upper(number || ' ' || name))

他にオプションはありますか?

4

2 に答える 2

2

条件がインデックスの使用を正当化するのに十分なほど選択的であると確信している場合は、次のようにインデックスの高速フル スキャンを促進してみてください。

select /*+ INDEX_FFS(tasks your_index_name) */
       number || ' ' || name
from   tasks
where  upper(number || ' ' || name) like '%VALUE%'

編集:

私は、IFFS を推進する別の方法が次のようなものであることを思い出すようです。

select number || ' ' || name
from   tasks
where  rowid in (
         select rowid
         from   tasks
         where  upper(number || ' ' || name) like '%VALUE%')

驚くべきことに、前者の方法よりも効率がほとんど低下しません。

于 2013-10-09T21:28:31.930 に答える