欢迎投稿

今日深度:

mysql关联查询速度慢的问题及解决,

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的实现原理和优化建议

        www.htsjk.Com true http://www.htsjk.com/Mysql/48951.html NewsArticle mysql关联查询速度慢的问题及解决, 目录 mysql关联查询速度慢 1. 记录原因 1.1 在一次线上的服务中 1.2 最终发现 2. 解决方案 3. 具体操作 总结 mysql关联查询速度慢 1. 记录原因 mysql关联查...
        评论暂时关闭