如何解决优化字符串搜索Oracle查询
| 我正在尝试优化如下所示的Oracle查询:select * from upcTable where upc like \'%567%\'
该查询对于诸如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%\'
在这种情况下,术语的数量大致相同,但是第一个示例要快一些。但是,对于15位数字使用相同的技术时,速度稍快,但仍然太慢。
解决方法
如果您像这样对列进行索引:
create index upcIndex on upcTable (upc,pk);
(其中“ 3”是表格的主键)
然后此查询可以对该索引执行INDEX FAST FULL SCAN:
select pk from upcTable where upc like \'%567380%\';
如果您确实需要所有列(选择*),则可以尝试以下操作:
select * from upcTable where pk in
(select pk from upcTable where upc like \'%567380%\');
, 您将不会使用任何执行\'%123%\'(前导%)的索引。如果可以使用\'123%\'进行搜索,则可以利用索引。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。