Oracle系列---【两个环境,表结构一致,数据量一致,索引也一致,为什么同样的sql执行时间却不一致?】

1.问题

两个环境,表结构一致,数据量一致,索引也一致,为什么同样的sql执行时间却不一致?

2.原因分析

通过执行计划,发现差异很大:

复制代码
# 查看执行计划
EXPLAIN 你的sql

通过dbeaver工具查看DDL上面的那个Statistics的值,发现两个环境的不一致。由此可以断定是统计信息出了问题。

为什么会这样?这是因为在oracle建立索引或者插入数据时,优化执行器没有统计到新数据,所以才导致了这个问题。oracle存数据是按块存的,隔一段时间刷新一下统计信息。mysql没有这个问题,mysql一般按行存,直接就更新了。

3.解决方案

更新统计信息

复制代码
ANALYZE TABLE 你的表 COMPUTE STATISTICS;
相关推荐
运维行者_23 分钟前
应用性能监控怎么选?从调用链到用户体验的五个能力维度
运维·服务器·数据库·人工智能·mysql·性能优化·应用性能监控
曹牧5 小时前
C#:空合并运算符
java·前端·数据库
小羊没烦恼!6 小时前
铁道部新客票系统设计(二)
开发语言·前端·数据库·python·oracle·c#·php
泡海椒7 小时前
JQuick-SQL JOIN 查询:连接注册数据集的正确方式
数据库·sql
xiaogai_gai7 小时前
钉钉月结报销到金蝶付款单同步方案实战教程
大数据·数据库·钉钉
Nturmoils7 小时前
报表总在扫大表,列存储应该放在哪一层
数据库
夜雪一千8 小时前
ShardingSphere 雪花 / UUIDv7 主键分片实战 + SQL 建表示例
数据库·sql
Elastic 中国社区官方博客8 小时前
Elasticsearch:安装自行管理的 Elastic Stack 集群
大数据·运维·服务器·数据库·elasticsearch·搜索引擎·全文检索
PingCAP9 小时前
Agent 从 Demo 到生产,到底卡在哪?
数据库·tidb·agent