首页 > 数据库 >mysql 关联查询速度慢 (解决)

mysql 关联查询速度慢 (解决)

时间:2022-12-30 10:55:56浏览次数:35  
标签:ci utf8 字符集 查询 速度慢 mysql general

 

转载:https://blog.csdn.net/qq_48091113/article/details/122695260

 

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;

  

标签:ci,utf8,字符集,查询,速度慢,mysql,general
From: https://www.cnblogs.com/lhlong/p/17014334.html

相关文章

  • 10-Mysql注入漏洞
    手工注入:get:url中带参数xxx.asp/asp?id=123123单引号and1=1/-0baidu.com/xxx.php?id=12312string=hasdfsdstring=网站asp/aspxaccess/sqlserverpost:搜索框、登录、注册、......
  • oracle 时间格式查询存储记录
    mybatis查询出oracle时间格式数据,选择何种数据类型能够接收问题:1、数据库中时间的存储,有哪几种类型2、这几种类型,对应使用mybatis查询出来,使用什么数据类型去接收数据......
  • mysql root 用户有多个密码
    mysql是用用户名+ip来区分用户的,如下,是三个不同的用户'username'@'localhost''username'@'127.0.0.1''username'@'%'在mysql,不同ip的同一用户尽量用同一个密码参......
  • 用Java开发出网站,在其中输入中文,但是保存到MySQL数据库中却是????
    前言:前两部分是从mysql和eclipse的角度去解决,在解决的过程中学到了之前没设计到的查看和修改数据库或数据表的字符集的知识。后一部分是掌握了前两步后,进行的新一轮解决问题......
  • MeterSphere 查询SQL引入接口做参数,前置SQL应用
    1、配置数据源在项目配置环境中编写数据库配置  2、编写SQL语句添加前置SQL 请求参数中使用  ${列名_1}指返回数据中第一个数值 参考:https://blog.cs......
  • 利用Python制作本地Excel的查询与生成的程序
    目录​​前言​​​​需求​​​​实验步骤​​​​Excel预览图片​​​​查询​​​​追加查询结果到Excel​​​​完整代码​​前言大家好我是毕加锁(锁!)今天教大家利......
  • 锦囊秘籍!用Python操作MySQL的使用教程集锦!
    一.python操作数据库介绍大家好,我是毕加锁(锁!)。Python标准数据库接口为PythonDB-API,PythonDB-API为开发人员提供了数据库应用编程接口。Python数据库接口支持非常多的......
  • Mysql索引覆盖
    作者:孙涛1.什么是覆盖索引通常情况下,我们创建索引的时候只关注where条件,不过这只是索引优化的一个方向。优秀的索引设计应该纵观整个查询,而不仅仅是where条件部分,还应该关注......
  • Mysql索引覆盖
    作者:孙涛1.什么是覆盖索引通常情况下,我们创建索引的时候只关注where条件,不过这只是索引优化的一个方向。优秀的索引设计应该纵观整个查询,而不仅仅是where条件部分,还应该......
  • Mysql数据库查看Database的大小的方法
    最简单的方法为:selectconcat(round(sum(data_length/1024/1024),2),'MB')asdatafromINFORMATION_SCHEMA.tableswheretable_schema='XXXXX2206'; 另外发现备......