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

1.问题

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

2.原因分析

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

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

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

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

3.解决方案

更新统计信息

复制代码
ANALYZE TABLE 你的表 COMPUTE STATISTICS;
相关推荐
l1t3 小时前
解决用docker安装umbra数据库遇到的FATAL:Operation not permitted错误
数据库·docker·容器
小江的记录本3 小时前
【MyBatis-Plus】MyBatis-Plus的核心特性、条件构造器、分页插件、乐观锁插件
java·前端·spring boot·后端·sql·tomcat·mybatis
2401_894241923 小时前
机器学习与人工智能
jvm·数据库·python
GentleDevin3 小时前
Redis服务常用命令
数据库·oracle
難釋懷3 小时前
Redis分片集群手动故障转移
数据库·redis·缓存
无名-CODING3 小时前
从零开始!Vue3+SpringBoot前后端分离项目Docker部署实战(上):环境搭建与数据库容器化
数据库·spring boot·docker
Bdygsl4 小时前
MySQL(2)—— CRUD
数据库·mysql
chushiyunen4 小时前
python edge-tts实现tts文本转语音、音频
数据库·python·音视频
原来是猿4 小时前
MySQL【事务中 - 事务的隔离级别】
数据库·mysql