首页 > 数据库 >一个mysql语句的优化

一个mysql语句的优化

时间:2023-12-23 15:13:18浏览次数:40  
标签:语句 sCvaliDate mysql 查询 耗时 sql 优化

语句如下:

select count(*) into cCount

from laratecommision a

where branchtype=3 and riskcode = sRiskCode and a.payyears = sPayYears and a.PayYear =sPayYear and a.BANKCHANNEL = sAgentCom and a.RATECOMSTATE = '1' and a.AGENTSERIAL = sAgentSeries and a.ACTIVETIME = CONCAT(sYears,sYearsFlag)
and a.F03 = sRateType and a.versiontype=sVersiontype AND a.startdate <= sCvaliDate and a.enddate >=sCvaliDate and a.managecom = sManageCom and a.Regionalismcode =sRegionalismCode;

 

其中:

sRiskCode等为传入funciton的参数。每个sql语句的执行时间为0.4秒,因为这样的语句较多,所以导致比较慢。

 

优化步骤如下:

1、查询每个步骤的耗时时间,定位到耗时时间长的sql语句;
2、查询耗时时间长的sql语句里面,是否有查询条件不匹配的情况,例如:字段类型是浮点型,但是传入的参数是字符型,如果有则修改掉;
3、类似“date(a.enddate) >=sCvaliDate”的查询条件(左边是对于字段的函数操作,右边是常数),修改为“a.enddate >= to_char(sCvaliDate,...)”(左边不包括函数,函数在右边);
4、分析where查询条件涉及到的字段的数据分布,在重复值较多的字段上面创建索引;如果重复值都较少,则把涉及到的字段创建联合索引。同时查看执行计划,
确保查询是走了索引的。

优化结果为:优化后,每个sql语句的执行时间为0秒。

标签:语句,sCvaliDate,mysql,查询,耗时,sql,优化
From: https://www.cnblogs.com/chenhongyi/p/17923129.html

相关文章

  • MySQL 8.0.32 InnoDB ReplicaSet 配置和手动切换
    1.环境准备主库:192.168.137.4mytest3从库:192.168.137.5mytest4MySQL:8.0.322.配置ReplicaSet实例启动mysqlshell#mysqlsh--uriroot@localhost--socket=/abce/mysql_data/mysql.sockMySQLShell8.0.32Copyright(c)2016,2023,Oracleand/oritsaffiliat......
  • 无涯教程-PL/SQL - Searched CASE 语句函数
    搜索的CASE语句没有选择器,并且该语句的WHEN子句包含提供布尔值的搜索条件。SearchedCASE-语法PL/SQL中搜索到的case语句的语法为-CASEWHENselector='value1'THENS1;WHENselector='value2'THENS2;WHENselector='value3'THENS3;...ELSESn......
  • 无涯教程-PL/SQL - IF-THEN-ELSIF 语句函数
    IF-THEN-ELSIF语句允许您在几种选择之间进行选择,IF-THEN 语句后可以是可选的ELSIF...ELSE语句,ELSIF子句允许您添加其他条件。IF-THEN-ELSIF-语法PL/SQL编程语言中的IF-THEN-ELSIF语句的语法为-IF(boolean_expression1)THENS1;--Executeswhentheboo......
  • 25.自动化测试架构优化
    打造测试框架的需求与价值领域模型适配:封装业务实现,实现业务管理提高效率:降低用例维护成本,提高执行效率增强功能:解决已有框架不满足的情况自动化框架应具备的功能支持管理用例,运行用例支持查找元素/定位元素,对元素/页面进行各种操作(点击,滑动,输入等等)支持生成测试报告......
  • 26.基于 page object 模式的测试框架优化实战
    目录异常处理(弹窗黑名单)日志记录报告生成测试数据的数据驱动异常弹框处理定义黑名单列表处理弹框#声明一个黑名单defblack_wrapper(fun):defrun(*args,**kwargs):basepage=args[0]try:returnfun(*args,**kwargs)......
  • 无涯教程-PL/SQL - IF-THEN-ELSE 语句函数
    在IF-THEN语句序列之后可以是ELSE语句的可选序列,它们在条件为FALSE时执行。IF-THEN-ELSE-语法语法fortheIF-THEN-ELSEstatementis-IFconditionTHENS1;ELSES2;ENDIF;其中,S1和S2是不同的语句序列。在IF-THEN-ELSE语句中,当测试条件为TRUE......
  • centos7_mysql_删除
    CentOS7中的MySQL是使用以下命令进行安装的:sudoyuminstallmysql-server以下是如何完全卸载MySQL的步骤:步骤1:停止MySQL服务sudosystemctlstopmysqld.service步骤2:禁用MySQL服务,使它不会在系统重启时启动sudosystemctldisablemysqld.service步骤3:卸......
  • MySQL-explain篇
    工具介绍模拟优化器执行SQL语句分析你的查询语句或是结构的性能瓶颈执行查询会返回执行计划的信息from中包含子查询,仍会执行该子查询,将结果放入临时表中typesystem:system是const的特例const:读取一次eq_ref:primarykey或uniquekey索引的所有部分被连接使用,最多只......
  • java接口自动化测试实战002----测试数据封装及ExcelUtil优化
    一、利用testNG测试框架进行封装1、封装实现新建测试类,类中新增多个方法,每个方法存储一条测试数据并调用HttpUtl类中的doGet或doPost方法。缺点:代码复杂、繁琐,且不适用测试数据量大的情况。2、封装步骤(1)maven的pom.xml文件中添加testNG测试框架的依赖,如下所示:<!--https://......
  • mysql报错:Duplicate entry ‘...‘ for key ‘field‘
    错误信息"Duplicateentry'...'forkey'field'"表示在数据库表中,你正在尝试插入一条数据的'number'字段的值已经存在。这通常是由于你设置了'field'字段为唯一键(UNIQUEKEY),而你又尝试插入一个已存在的值。解决这个问题的方法有以下几种:检查输入的数据:确保你插入的数据在该字段......