提高sql查询性能-使用instr函数替换like

通过对比发现,在大规模数据集上使用Oracle的INSTR函数代替LIKE操作符能显著提高模糊查询的速度。实测显示,在特定场景下,查询耗时从1.570毫秒减少到0.654毫秒。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在查询时经常使用like作为关键字进行模糊查询,在生产环境中由于数据量较大,使用like查询时比较慢,尝试了一些方法,最终发现使用oracle的instr函数可以显著提高查询的效率.

关于数据量:

SELECT count(1FROM t_partner_role; 
--612565
SELECT count(1FROM T_VENDOR_REPOSITORY; 

--1178044  


sql语句查询时间比较:

SELECT count(id)
  from (select t.id
          FROM T_VENDOR_REPOSITORY t
         WHERE t.deleted = 0
           and t.partnerid in (select distinct (tpr.partnerid)
                                 from t_partner_role tpr
                                where tpr.partnerroletype in (1)
                                  and tpr.deleted = 0)
           and t.VENDORNAME like '%拓维信息系统股份有限公司%');
--使用like查询耗时  1.570ms

SELECT count(id)
  from (select t.id
          FROM T_VENDOR_REPOSITORY t
         WHERE t.deleted = 0
           and t.partnerid in (select distinct (tpr.partnerid)
                                 from t_partner_role tpr
                                where tpr.partnerroletype in (1)
                                  and tpr.deleted = 0)
           and instr(t.VENDORNAME,'拓维信息系统股份有限公司',1,1)!=0);

--使用instr查询耗时 0.654ms


通过真实数据的比较发现使用instr的查询效率要高于like,以后再优化like查询时可以考虑.


评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值