Oracle系列---【两个环境,表结构一致,数据量一致,索引也一致,为什么同样的sql执行时间却不一致?】
1.问题
两个环境,表结构一致,数据量一致,索引也一致,为什么同样的sql执行时间却不一致?
2.原因分析
通过执行计划,发现差异很大:
# 查看执行计划
EXPLAIN 你的sql
通过dbeaver工具查看DDL上面的那个Statistics的值,发现两个环境的不一致。由此可以断定是统计信息出了问题。
为什么会这样?这是因为在oracle建立索引或者插入数据时,优化执行器没有统计到新数据,所以才导致了这个问题。oracle存数据是按块存的,隔一段时间刷新一下统计信息。mysql没有这个问题,mysql一般按行存,直接就更新了。
3.解决方案
更新统计信息
ANALYZE TABLE 你的表 COMPUTE STATISTICS;
愿你走出半生,归来仍是少年!
浙公网安备 33010602011771号