暂无图片
Oracle 为什么同一个sql 使用analyze收集后,性能更差,使用dbms_stats.gather_table_stats执行后,性能更好呢?
我来答
分享
暂无图片 匿名用户
Oracle 为什么同一个sql 使用analyze收集后,性能更差,使用dbms_stats.gather_table_stats执行后,性能更好呢?

为什么同一个sql,使用analyze收集后,性能更差,使用dbms_stats.gather_table_stats执行后,性能更好呢?

我来答
添加附件
收藏
分享
问题补充
3条回答
默认
最新
布衣
暂无图片

image.png
截图取自:
https://blog.csdn.net/tswisdom/article/details/8904225

希望对你有所帮助,如果帮助,请采纳

暂无图片 评论
暂无图片 有用 0
刘贵宾

ANALYZE 不再收集基于成本的优化器所需的统计信息


dbms_stats能良好地估计统计数据(尤其是针对较大的分区表),并能获得更好的统计结果,最终制定出速度更快的SQL执行计划。


analyze收集后统计信息不准确,收集统计信息时采样比例过小等等。 Oracle优化器严重依赖于统计信息,如果统计信息有问题,则很容易导致SQL不能使用正确的执行计划。性能理所当然的会更差

暂无图片 评论
暂无图片 有用 0
张sir

analyze基本上已经被废弃了,在收集统计信息的全面性上和准确性上,analyze不及dbms包,可以看下收集完统计信息的sql的执行计划,看看cost消耗在哪里,可以分析下哪块统计信息不准导致的sql性能下降。

暂无图片 评论
暂无图片 有用 0
回答交流
提交
问题信息
请登录之后查看
邀请回答
暂无人订阅该标签,敬请期待~~
暂无图片墨值悬赏