使用instr 函数优化替换Like条件子句提高数据检索性能案例总结-阿里云开发者社区

开发者社区> 5abyqn7wigzqm> 正文

使用instr 函数优化替换Like条件子句提高数据检索性能案例总结

简介: 使用instr 函数优化替换Like条件子句提高数据检索性能
+关注继续查看

在业务上有个性能较低的SQL语句,使用了Like条件子句从而导致其它内关联表索引失效,如下SQL:

select count(1) countNumber from(
select cc.CLAIM_ID,ROWNUM from claimcontract cc
INNER JOIN GNTSLIP_EXPAN_INF G ON CC.Contract_Id=G.ARRANGEMENT_ID
inner join (select C.CONTRACT_ID from contract c where exists( select 1 from CONTRACTROLE CR
                where CR.CONTR_COMPONENT_ID = C.CONTRACT_ID and CR.CONT_ID = '' and C.END_DT < SYSDATE AND

                CR.END_REASON_TP_CD IS NULL AND (CR.CONTR_ROLE_TP_CD BETWEEN 1 AND 3)
) AND C.EXECUTED_DT>=ADD_MONTHS(trunc(SYSDATE), -36)) t on cc.contract_id=t.CONTRACT_ID
AND (G.GNTSLIP_NO like 'E%' or G.GNTSLIP_NO like 'W%' or G.GNTSLIP_NO like 'P%' )
)

优化前的SQL执行计划:

Image.png

使用instr 函数优化替换Like条件子句优化后SQL语句:

select count(1) countNumber from(
select cc.CLAIM_ID,ROWNUM from claimcontract cc
INNER JOIN GNTSLIP_EXPAN_INF G ON CC.Contract_Id=G.ARRANGEMENT_ID
inner join (select C.CONTRACT_ID from contract c where exists( select 1 from CONTRACTROLE CR
                where CR.CONTR_COMPONENT_ID = C.CONTRACT_ID
                and CR.CONT_ID = '11111111111111'
                and C.END_DT < SYSDATE
                AND CR.END_REASON_TP_CD IS NULL
                AND (CR.CONTR_ROLE_TP_CD BETWEEN 1 AND 3)
) AND C.EXECUTED_DT>=ADD_MONTHS(trunc(SYSDATE), -36)) t on cc.contract_id=t.CONTRACT_ID
AND (instr(G.GNTSLIP_NO,'E')=1 or instr(G.GNTSLIP_NO,'W')=1 or instr(G.GNTSLIP_NO,'P')=1 )
)

优化后的SQL执行计划:
Image.png

经过对比优化前和优化后的SQL执行计划,可以很明显的看出性能方面有很明显的差别,优化前的SQL所使用的Like子句中并没有用上索引,导致SQL查询时全表扫描;优化后的SQL采用了instr函数来替代模糊查询,使数据库表索引生效,性能上有了非常明显的提升。

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
冬季实战营第一期:从零到一上手玩转云服务器实验报告
实操ECS云服务器、快速搭建LAMP 、 部署MySQL 、使用PolarDB和ECS搭建门户网站 保姆级手册
3 0
一文快速搞懂系列__一文快速搞懂SuperSet[实战案例]
大家好,我是**ChinaManor**,直译过来就是中国码农的意思,俺希望自己能成为国家复兴道路的铺路人,大数据领域的耕耘者,平凡但不甘于平庸的人。
4 0
一文快速了解ClickHouse 战斗民族的开源搜索引擎(超详细解读+快速入门)
大家好,我是**ChinaManor**,直译过来就是中国码农的意思,俺希望自己能成为国家复兴道路的铺路人,大数据领域的耕耘者,一个平凡而不平庸的人。
6 0
【技术干货】40页PPT分享万亿级交易量下的支付平台设计(5)
【技术干货】40页PPT分享万亿级交易量下的支付平台设计(5)
10 0
【技术干货】40页PPT分享万亿级交易量下的支付平台设计(6)
【技术干货】40页PPT分享万亿级交易量下的支付平台设计(6)
3 0
【技术干货】40页PPT分享万亿级交易量下的支付平台设计(4)
【技术干货】40页PPT分享万亿级交易量下的支付平台设计(4)
3 0
冬季实战营第一期学习报告
通过五天学习与实操,对ECS云服务器入门、快速搭建LAMP环境、部署MySQL数据库、回顾搭建Docker环境和Spring Boot以及使用PolarDB和ECS搭建门户网站操作,对本期学习与实操的认识。
3 0
冬季实战营第一期:从零到一上手玩转云服务器实验报告
第一期主要进行了六次实验,分别是《动手实操ECS云服务器》、《动手实操快速搭建LAMP环境》、《使用ECS服务器部署MySQL数据库》、《通过workbench远程登录ECS,快速搭建Docker环境》、《从零搭建Spring Boot的Hello World》以及《使用PolarDB和ECS搭建门户网站》。首先远程登陆ECS实例,搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。然后配置及远程访问MySQL。冯晓帅老师在直播上带大家通过workbench登录ECS并快速搭建Docker环境,运行Spring Boot,最后安装WordPress并搭建博客。
8 0
MySQL高可用架构演进
MySQL是数据库领域当之无愧的霸主之一,其在各行各业被广泛应用,随着广泛使用,对于MySQL本身的高可用性的要求就是不可避免的话题,而MySQL的高可用方案也随着MySQL功能的完善经历了多次升级,本文将对MySQL的各种高可用架构进行分析,以此来了解架构的演进。
3 0
34
文章
1479
问答
文章排行榜
最热
最新
相关电子书
更多
《2021云上架构与运维峰会演讲合集》
立即下载
《零基础CSS入门教程》
立即下载
《零基础HTML入门教程》
立即下载