在不同版本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语句,使用工具连接这两个数据库进行查询时,时间是差不多的,也很快。
那就说明上述语句在两个不同数据库查询不一样?

很纠结为什么会出现这种原因?是不是和云数据库的一些设置有关系?

我爱大可乐
《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
讨论数量: 27
Mutoulee

这种迁移切换最好都是在同一版本进行比较稳妥,你这跨度太大了。

试试安装一个Mysql8.0然后测试一下,这样可以排除是否因为版本、设置问题导致。

3周前 评论
我爱大可乐 (楼主) 3周前
我爱大可乐 (楼主) 3周前
Mutoulee (作者) 3周前
我爱大可乐 (楼主) 3周前
Mutoulee (作者) 3周前

考虑网络问题,你用工具的环境和跑代码的是一个环境吗?

3周前 评论
tomcath (作者) 3周前
我爱大可乐 (楼主) 3周前
tomcath (作者) 3周前
我爱大可乐 (楼主) 3周前
我爱大可乐 (楼主) 3周前

一个直连 一个走的云 云的速度肯定会慢一点

3周前 评论
我爱大可乐 (楼主) 3周前

云数据库改成内网链接

3周前 评论
我爱大可乐 (楼主) 3周前

云数据库,查询时间长?网络问题?还有就是断点看是laravel在哪个位置用的时间长

3周前 评论
我爱大可乐 (楼主) 3周前
deatil (作者) 3周前
我爱大可乐 (楼主) 3周前
deatil (作者) 3周前

是不是数据库和服务器没在一个区域

3周前 评论
我爱大可乐 (楼主) 3周前
薄荷蓝的晴天 (作者) 3周前

测试结果如下: 云数据库8.0查询时间7s,本地8.0数据库查询时间7s。 云数据库5.6查询时间0.2s,本地5.6数据库查询时间0.2s

上述都是通过ORM查询的(不存在网络问题)。

我将生成的SQL语句直接查询(DB::raw())查询时间相差不大。

2周前 评论
wxfjamdc 2周前

时间差异会有三个问题

  1. 代码是否有差异----无差异
  2. 环境是否有差异(服务器,mysql,redis版本等)mysql版本不同
  3. 网络是否有差异 ---- 看题原5.6应该是跟代码在同一服务器上。 网络上肯定比云要快一下 但是一般都是毫秒范围 目前你这是秒级 也可以排出 从这里看只能是版本差异了 根据前面的回答 建议 explain 看看索引情况。 还有就是应该8对groupby支持跟5.6不一样(差异很大)建议查一查文档
2周前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!