SQL报表.二开案例.分析SQL脚本运行慢问题
【场景】分析SQL报表运行慢问题
【步骤】获取运行的真实SQL,在数据库运行看执行计划
通过APM获取[APM](https://wenku.my7c.com/article/145480274074763008?productLineId=1&isKnowledge=2)
![Image_20230119172527.webp](/download/01000edb0036ce414779a7e268cb36a7b7dc.webp)
通过数据库监控获取[数据库](https://wenku.my7c.com/article/93398725082314496?productLineId=1&isKnowledge=2)
![Image_20230119172807.webp](/download/0100ed4bb2cbe7d747eea3a6106c03632c6e.webp)
【优化方案】
<1>即使是普通查询,当逻辑过于复杂时,建议勾选创建时的【存储过程】;
![Image_20230119170845.webp](/download/01005e60498350aa4d1894d550bf48cbcd1c.webp)
普通查询逻辑:平台会在外层嵌套生成一个临时表做分页查询,用作每次翻译时仅取部分数据,减少服务器需要的内存
存错过程查询逻辑:直接使用sql查询,第一次加载就加载全部的数据,(如果数据量非常大时就会消耗很多应用服务器的内存资源)
<2>分析SQL脚本在数据库运行的执行计划
a)查看执行计划
![image.webp](/download/01009f3d02a194964cf6a553a13b7555776c.webp)
b)找出执行计划资源损耗最严重的点,如查找流量最大的线(数量);(系统推荐索引针对复杂sql不准)
**一般线条比较粗的就代表关联数量比较大**;
![image.webp](/download/0100ff8f45018c334bb8adb1e69cc9635a02.webp)
此案例中查询数据1900w,外层为嵌套循环,内层为扫描,本质就是o(m*n)
c)可选:简化慢逻辑sql,定位确实是否为此联查慢
![image.webp](/download/01001e75e60512f949d4bbd477a252f84827.webp)
d)增加索引优化:
```sql
create index IDX_SD_ZNTRUCK_BillNO on T_SD_ZNTRUCK (fbillno)
```
【备注】
<1>开发sql账表,不止应该维护sql查询语句,还有根据业务量,预定好索引,系统创建的表默认只有主外键有索引,以及业务的自定义索引;针对二开字段,一定要自行维护索引
<2>针对没有索引的字段,有时使用嵌套循环,有时使用哈希匹配,均为数据库针对没有索引的逻辑自行优化计算;
因此为了避免偶发查询慢问题,最好确认场景增加索
SQL报表.二开案例.分析SQL脚本运行慢问题
【场景】分析SQL报表运行慢问题【步骤】获取运行的真实SQL,在数据库运行看执行计划通过APM获取[APM](https://wenku.my7c.com/article/1454...
点击下载文档
本文2024-09-16 18:32:49发表“云星空知识”栏目。
本文链接:https://wenku.my7c.com/article/kingdee-k3cloud-22857.html
您需要登录后才可以发表评论, 登录登录 或者 注册
最新文档
热门文章