前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >[MYSQL] mysql 慢SQL优化 (半小时优化到半秒)

[MYSQL] mysql 慢SQL优化 (半小时优化到半秒)

原创
作者头像
大大刺猬
发布2024-07-05 15:15:37
1030
发布2024-07-05 15:15:37
举报
文章被收录于专栏:大大刺猬

导读

在 mysql 5.7环境, 两个 10W行数据左右的表, 做left join 耗费 半小时.

sql参考如下 (特殊说明: 如下出现的sql和表均为测试模拟的)

代码语言:sql
复制
select count(1) from db1.sbtest1 t1 left join db1.sbtest2 t2 on t1.c=t2.c and t1.pad=t2.pad;

排查过程

首先看执行计划, 发现rows基本上和表大小一致 (实际环境, type:index 也是全扫, 不要被误导了. (联合索引)).

查看更详细的执行计划 (format=json) 发现存在字符集转化问题.

查看表结构, 发现两个表字符集不一样. 故要求其整改. 但字符集转化影响应该不大. 还是得看看为啥是全表扫描.

查看表DDL, 发现ON字段没得索引...

如果是8.0的话, 没得索引还可以使用hash join, 速度也是非常快的. 但是5.7 没得索引就贼慢. 加上索引之后速度就快了(不到0.5秒)

代码语言:sql
复制
alter table db1.sbtest2 add index t2_c(c);

本案例还是比较简单的.

分享这个案例的另一个原因是: 沟通的时候, 开发说有没得索引区别真没那么大.

mysql查询数据索引的影响是很大的, 基本上90%的优化都能通过加减索引来实现.

参考: https://dev.mysql.com/doc/refman/8.0/en/hash-joins.html

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 导读
  • 排查过程
相关产品与服务
云数据库 MySQL
腾讯云数据库 MySQL(TencentDB for MySQL)为用户提供安全可靠,性能卓越、易于维护的企业级云数据库服务。其具备6大企业级特性,包括企业级定制内核、企业级高可用、企业级高可靠、企业级安全、企业级扩展以及企业级智能运维。通过使用腾讯云数据库 MySQL,可实现分钟级别的数据库部署、弹性扩展以及全自动化的运维管理,不仅经济实惠,而且稳定可靠,易于运维。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档