sql语句的优化

tyky79it  于 2021-07-24  发布在  Java
关注(0)|答案(1)|浏览(307)

关闭。这个问题需要细节或清晰。它目前不接受答案。
**想改进这个问题吗?**通过编辑这个帖子来添加细节并澄清问题。

9个月前关门了。
改进这个问题
我最近收到一个查询,它运行时间太长。我想你的支持如何优化它。这个数据库是很久以前开发的。

SELECT x.CNPJ_CPF,
   X.PRODUCT,
   X.NAME_PRODUCT,
   Y.GROUP,
   Z.NAME,
   COUNT(*),
   X.VALOR,
   C.USER
FROM ATD222 X,
 CED001 Y,
 CED002 Z,
 CXD555 C
WHERE X.PRODUCT = Y.CODE
 AND Y.GROUP = Z.CODE
 AND X.CNPJ_CPF = C.CNPJ_CPF
 AND X.DATE >= '2020-01-01'
 AND X.DATE<='2020-01-30'
GROUP BY X.CNPJ_CPF,
     X.PRODUCT,
     X.NAME_PRODUCT,
     Y.GROUP,
     Z.NAME,
     X.VALOR,
     C.USER
3b6akqbq

3b6akqbq1#

一般来说,查询速度慢的一些常见原因是
优化器表中缺少/错误的统计信息
优化器由于选项1选择了错误的计划,或者没有考虑表中的数据倾斜
依赖于查询中数据类型的隐式转换(例如:与varchar比较的日期列)
当索引可能合适时缺少索引(注意:使用索引可能并不总是使查询更快)
缺少约束(例如,定义和保持约束可以优化查询)
有时orm编写的查询非常复杂,而一个简单的查询就足够了,例如:在应该使用连接时留下的连接太多,或者在查询中从未使用的连接表等等。。
要知道查询中可能出现的错误需要时间,查看执行计划、模式上的约束、表上的索引和数据类型非常重要。

相关问题