关闭。这个问题需要细节或清晰。它目前不接受答案。
**想改进这个问题吗?**通过编辑这个帖子来添加细节并澄清问题。
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
1条答案
按热度按时间3b6akqbq1#
一般来说,查询速度慢的一些常见原因是
优化器表中缺少/错误的统计信息
优化器由于选项1选择了错误的计划,或者没有考虑表中的数据倾斜
依赖于查询中数据类型的隐式转换(例如:与varchar比较的日期列)
当索引可能合适时缺少索引(注意:使用索引可能并不总是使查询更快)
缺少约束(例如,定义和保持约束可以优化查询)
有时orm编写的查询非常复杂,而一个简单的查询就足够了,例如:在应该使用连接时留下的连接太多,或者在查询中从未使用的连接表等等。。
要知道查询中可能出现的错误需要时间,查看执行计划、模式上的约束、表上的索引和数据类型非常重要。