mysql关联查询速度慢的问题及解决,
目录
- mysql关联查询速度慢
- 1. 记录原因
- 1.1 在一次线上的服务中
- 1.2 最终发现
- 2. 解决方案
- 3. 具体操作
- 总结
mysql关联查询速度慢
1. 记录原因
mysql关联查询速度很慢,是由于字段字符集规则不一致所导致
1.1 在一次线上的服务中
- 发现有几个关联查询速度特别慢,试过了多种优化方案,最后把问题定格在 count() 这个函数
- 由于是分页查询,所以肯定会有count()来去查询记录数,但是每次执行这个count()都会卡住好几秒
1.2 最终发现
- 被关联的两个表 字符集规则不一致,一个是utf8_general_ci,另一个是utf8mb4_0900_ai_ci
- 具体原因可能是因为线上服务器和本地服务器的mysql版本不同导致的,在覆盖的时候出现了问题
2. 解决方案
# 查看各个字段的字符集规则: show full columns from 表名; # 修改字段的字符集: ALTER TABLE 表名 CHANGE 字段名 字段名 VARCHAR(100) CHARACTER SET utf8 COLLATE utf8_general_ci; # 修改表的默认字符集: ALTER TABLE 表名 DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci; # 查看数据库编码: SHOW CREATE DATABASE db_name; # 查看表编码: SHOW CREATE TABLE tbl_name;
3. 具体操作
- 这边我是一个字段一个字段的改 把两个表的字段都统一成了utf8_general_ci格式
ALTER TABLE 表名 CHANGE 字段名 字段名 varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci;
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持PHP之友。
您可能感兴趣的文章:- MYSQL关联关系查询方式
- MySQL多表关联查询方式及实际应用
- 使用MySQL子查询和CASE语句判断关联状态
- Mysql关联查询的几种实现方式
- mysql 使用join进行多表关联查询的操作方法
- MySQL多表关联查询相关练习题
- MySQL关联查询Join的实现原理和优化建议
本站文章为和通数据库网友分享或者投稿,欢迎任何形式的转载,但请务必注明出处.
同时文章内容如有侵犯了您的权益,请联系QQ:970679559,我们会在尽快处理。