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

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

我爱大可乐
《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
讨论数量: 27
Mutoulee

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

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

1年前 评论
我爱大可乐 (楼主) 1年前
我爱大可乐 (楼主) 1年前
Mutoulee (作者) 1年前
我爱大可乐 (楼主) 1年前
Mutoulee (作者) 1年前

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

1年前 评论
tomcath (作者) 1年前
我爱大可乐 (楼主) 1年前
tomcath (作者) 1年前
我爱大可乐 (楼主) 1年前
我爱大可乐 (楼主) 1年前

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

1年前 评论
我爱大可乐 (楼主) 1年前

云数据库改成内网链接

1年前 评论
我爱大可乐 (楼主) 1年前

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

1年前 评论
我爱大可乐 (楼主) 1年前
deatil (作者) 1年前
我爱大可乐 (楼主) 1年前
deatil (作者) 1年前

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

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

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

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

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

1年前 评论
wxfjamdc 1年前

时间差异会有三个问题

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

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