sql查询语句过慢导致导出失败

问题遇到的现象和发生背景

img

img


由于查询时间过久,导致导出失败,求一个加快查询的实现

sql查询慢,贴个这个图有什么用,sql不贴,表关系不贴...

你那个sql过的过于复杂了吧,看你联表的时候好多相同的表只是条件不同,没必要用那么多left join吧

可以建索引字段,把关联的字段建成索引试一下。另外看一下是否可以把sql关联的数据,定时同步到一个单表中,导出的时候可以,直接查询单表。思路如有帮助,请采纳一下,谢谢!

语句贴出来啊

sql优化的方案很多,sql写的太复杂了,对查询的字段加索引。
通过执行计划,可以查看sql执行过程以及索引使用情况。

explain sql

sql优化不了的情况下,考虑是否可以用异步的方式处理。

大部分是同一个表自连接,可以考虑用union all 来取代left join

把一些left join 尽可能改成子查询,可能会快点?(如果有的表关联数据量小的情况下)

sql语句贴出来

由于本人比较菜,能不能给个实现的方法

1.sql层面可以考虑使用with tt as(select * from A)的实现方式,将你的sql拆分成多个子项,最后在组合;
2.有些博主说的使用inner join替换leftjoin,并且设置请求时间往后加长,或者前端加个进度条的样式那种;

两个解决办法,一个是调整代码数据库等待超时参数,一个是优化语句

用中间表 或者把sql语句转为代码逻辑 你这关联了那么多张表怎么会查询的快 阿里开发规范了解下 里面强制要求mysql禁止使用三表级三表以上的关联查询

查询条件加索引,把sql贴出来看看吧

可以先给project_argumentation表的base_id字段和 project_finance的base_id字段加普通索引,试试,具体还是要分析表

img

优化sql,增加索引

  1. 有这种查询说明表设计不合理, 需要重新设计.
  2. 可以在数据分析的平台来做.
  3. 如果以上都不行的话,
    可以把sql 分成多段执行, 对每段进行sql 优化, 增加索引等.

加索引,再用临时表分步查询

关联字典值的不用挨个都left join 改成in。

哈哈哈,不想给钱是不是,表结构,索引,中间表都可以