在不同版本MySQL查询时间不一致?
1. 运行环境
原数据库版本为5.6(在宝塔安装的)。现数据库为云数据库版本为8.0。跑代码的服务器和云数据库是使用内网连接的。
2. 问题描述?
有一个查询语句,连接原数据库时查询时间很短,但是切换到现数据库查询时间就很长。(时间差了15倍左右)
此查询语句是一个whereIn
条件中包含大量数据的查询。代码示例如下:
Orderdetail::whereIn('order_id',$orderIdArr)->where('goods_name',$goods_name)->groupBy('goods_id')->get();
orderIdArr
是一个包含大量数据的数组(先不说优化SQL语句的事情)。goods_name
可以看做是一个固定值。
上述语句查询时间在两个数据库连接的的查询时间不同。
另外我拿到生成的SQL语句,使用工具连接这两个数据库进行查询时,时间是差不多的,也很快。
那就说明上述语句在两个不同数据库查询不一样?
很纠结为什么会出现这种原因?是不是和云数据库的一些设置有关系?
这种迁移切换最好都是在同一版本进行比较稳妥,你这跨度太大了。
试试安装一个Mysql8.0然后测试一下,这样可以排除是否因为版本、设置问题导致。
考虑网络问题,你用工具的环境和跑代码的是一个环境吗?
一个直连 一个走的云 云的速度肯定会慢一点
云数据库改成内网链接
云数据库,查询时间长?网络问题?还有就是断点看是laravel在哪个位置用的时间长
是不是数据库和服务器没在一个区域
测试结果如下: 云数据库8.0查询时间7s,本地8.0数据库查询时间7s。 云数据库5.6查询时间0.2s,本地5.6数据库查询时间0.2s
上述都是通过ORM查询的(不存在网络问题)。
我将生成的SQL语句直接查询(
DB::raw()
)查询时间相差不大。时间差异会有三个问题