Ove*_*119 1 oracle optimization
我正在尝试优化看起来像这样的Oracle Query:
select * from upcTable where upc like '%567%'
Run Code Online (Sandbox Code Playgroud)
对于像567这样的小搜索术语,查询速度很快,但它可以长达15位数,其中可能需要约1.5秒.反正有加速吗?
我试过做类似的事情
select * from
(select * from rldb.productmaster where upc like '%567%')
where upc like '%380%'
select * from rldb.productmaster where upc like '%567380%'
Run Code Online (Sandbox Code Playgroud)
在这种情况下,术语的数量大致相同,但第一个例子有点快.然而,当使用相同的技术15位数时,它会更快但仍然太慢.
如果您将列索引如下:
create index upcIndex on upcTable (upc, pk);
Run Code Online (Sandbox Code Playgroud)
(pk表的主键在哪里)
那么这个查询可以对该索引执行INDEX FAST FULL SCAN:
select pk from upcTable where upc like '%567380%';
Run Code Online (Sandbox Code Playgroud)
如果你真的需要所有列(选择*),那么你可以试试这个:
select * from upcTable where pk in
(select pk from upcTable where upc like '%567380%');
Run Code Online (Sandbox Code Playgroud)