我经常运行这个查询,我想优化它。
select
number || ' ' || name
from tasks
where upper(number || ' ' || name) like '%VALUE%'
我创建了一个索引,但它与没有索引的时间相同
create index name on tasks (upper(number || ' ' || name))
还有其他选择吗?
我经常运行这个查询,我想优化它。
select
number || ' ' || name
from tasks
where upper(number || ' ' || name) like '%VALUE%'
我创建了一个索引,但它与没有索引的时间相同
create index name on tasks (upper(number || ' ' || name))
还有其他选择吗?
如果您确定条件的选择性足以证明使用索引是合理的,那么您可能想尝试使用以下方法促进索引快速全扫描:
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%')
令人惊讶的是,效率几乎没有前一种方法低。