首页 > 数据库 >发现sql慢就加索引?非也!

发现sql慢就加索引?非也!

时间:2023-12-25 21:12:34浏览次数:28  
标签:三方 慢就加 emax order 索引 sql import id

【慢Sql,耗时≈5s】

在Archery平台发现近期的一个慢sql:SELECT * FROM emax_order_detail WHERE import_order_no = ?

 经测试,的确是慢。SELECT * FROM emax_order_detail WHERE import_order_no = '1738120234847571968' 。尝试加上limit 1,依然超过5s。

【如何优化】

优化方式,直接的方式是在 import_order_no 上加索引。这也是头疼医头的方式。

有没有注意,emax_order_detail 已经有许多索引了。

 

 【发现问题就解决,往往是低效的方式】

我们对业务进行分析,程序稍作改动,下面sql执行性能提高数倍。

SELECT * FROM emax_order_detail WHERE create_time>='2023-12-17' and import_order_no = '1738120234847571968'

SELECT * FROM emax_order_detail WHERE enterprise_id=1700039047700220 and import_order_no = '1738120234847571968'

 

【一言以蔽之,企业开发中,理清业务,事半功倍,包括所执行的sql】

类似的慢sql有许多,

  • 定时任务 按进行中状态拿一批数据的sql

  • 三方通道回调,假定三方给的报文里只有三方自己的单号,按三方单号定位数据记录的sql

  • 三方通道回调,三方给的报文里包含我司单号、三方自己的单号,程序却直接用三方单号定位数据记录

  • 企业协议列表上的“查看保全合同”操作,传给auth的不是协议id,而是三方的合同编号。auth本可以通过协议id定位记录,却要通过三方的合同编号定位记录。

  • 企业开票记录里,保存的服务商发票类目id是服务商系统返回的id。查询发票类目名称时,传给channel的是服务商返回的发票类目id。channel本可以用自己的主键定位记录,结果却用服务商返回的发票类目id定位记录。

  • 我司提供给商户的查询交易回单的API,商户上送商户自己的订单号,我们程序直接根据商户单号定位记录。(本案)

  • 。。。

只要对业务稍加分析,我们程序就不会出现这么多慢sql。

 

标签:三方,慢就加,emax,order,索引,sql,import,id
From: https://www.cnblogs.com/buguge/p/17926982.html

相关文章

  • sql 关键词的执行顺序
    在SQL中,关键词的执行顺序如下:FROM:指定要查询的数据表或视图。JOIN:将多个表连接起来,形成一个新的虚拟表。WHERE:根据指定的条件筛选数据行。GROUPBY:按照指定的列对数据进行分组。HAVING:对分组后的数据进行条件过滤。SELECT:选择要查询的列。DISTINCT:去除重复的行。ORDERBY:对查询结......
  • 数据库 Mysql 多表查询,left join联合两个sql示例
    SELECTt1.RowID,t1.UserID,t1.CreateDate,t1.BatchState,t2.InputDataCount,t1.QtyFROM(SELECT@curRow:=@curRow+1ASRowID,`UserID`,DATE_FORMAT(CreateDate,'%Y-%m-%d')ASCreateDate,......
  • 数据库 MySql快速导入外部数据库流程
    适用于新安装MySql本地没有数据情况外部MySql数据库文件任务管理器停用Mysql进程将外部文件替换本地默认文件即可重启电脑导入完成。......
  • 保姆级搭建Mysql 并进行视图可视化操作
    安装MySQL数据库选择mysql5.7.36_x32.msi”,双击运行,如下图所示:在此窗口中,选择“Custom”选项,点击“Next>”进入下一步;在此窗口中,选择+号下的MySQLServer5.7.36–x64,点击中间的绿色箭头符号,添加完成如下图所示:然后点击“Next>”进入下一步进行安装;继续点击“Next>”进入下一步......
  • 美团面试:ES+Redis+MySQL高可用,如何实现?
    文章很长,且持续更新,建议收藏起来,慢慢读!疯狂创客圈总目录博客园版为您奉上珍贵的学习资源:免费赠送:《尼恩Java面试宝典》持续更新+史上最全+面试必备2000页+面试必备+大厂必备+涨薪必备免费赠送:《尼恩技术圣经+高并发系列PDF》,帮你实现技术自由,完成职业升级,薪......
  • 无涯教程-PostgreSQL - 连接Perl
    安装模块可以使用PerlDBI模块将PostgreSQL与Perl集成,PerlDBI模块是Perl编程语言的数据库访问模块。它定义了一组提供标准数据库接口的方法,变量和约定。这是在Linux/Unix机器上安装DBI模块的简单步骤-$wgethttp://search.cpan.org/CPAN/authors/id/T/TI/TIMB/DBI-1.625.tar.......
  • 企业实战总结:SQL Join执行的常见问题及解决方案
    1.背景SQL的join对于数据开发同学是最经常遇到的操作,通过表与表之间的关联来得到想要的数据。但是在开发中我们会遇到一些莫名奇妙的问题,本文就选择最常见的两类问题跟大家分享。2.结果不符合预期2.1string和bigint做join,出现重复数据这个问题源于底层的隐式转换规则,当string和b......
  • mysql执行计划之Extra列-Using where
    顾名思义,Extra列是用来说明一些额外信息的,我们可以通过这些额外信息来更准确的理解MySQL到底将如何执行给定的查询语句。MySQL提供的额外信息很多。这里单说Usingwhere。Usingwhere只是表示MySQL使用where子句中的条件对记录进行了过滤。与是否全表扫描或读取了索......
  • 无涯教程-PostgreSQL - 连接C/C++
    本教程将使用libpqxx库,该库是PostgreSQL的官方C++客户端API。libpqxx的源代码在BSD许可下可用,因此您可以免费下载,将其传递给他人,进行更改,出售,将其包含在自己的代码中,并与选择的任何人共享您的更改。安装Libpqxx可以从以下链接下载最新版本的libpqxx:下载Libpqxx。因此,下载......
  • Mysql基础增删改查语句
    一,基础语句1.增加Insert(特殊的如果id自动递增的话,就不需要插入id)基本语法 insertinto表名(列1,列2,列3,列4,...) values(值,值,值)例子 insertintostudent(name,sex,age)values('张三',18,'男')插入的另外一种形式:insertinto表名set列=值,列=值,列=值,....例子 insertinto......