mysql關(guān)聯(lián)查詢速度慢的問題及解決
更新時(shí)間:2025年03月13日 15:31:52 作者:一個(gè)愛看綜藝的程序猿
這篇文章主要介紹了mysql關(guān)聯(lián)查詢速度慢的問題及解決方案,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
mysql關(guān)聯(lián)查詢速度慢
1. 記錄原因
mysql關(guān)聯(lián)查詢速度很慢,是由于字段字符集規(guī)則不一致所導(dǎo)致
1.1 在一次線上的服務(wù)中
- 發(fā)現(xiàn)有幾個(gè)關(guān)聯(lián)查詢速度特別慢,試過了多種優(yōu)化方案,最后把問題定格在 count() 這個(gè)函數(shù)
- 由于是分頁查詢,所以肯定會有count()來去查詢記錄數(shù),但是每次執(zhí)行這個(gè)count()都會卡住好幾秒
1.2 最終發(fā)現(xiàn)
- 被關(guān)聯(lián)的兩個(gè)表 字符集規(guī)則不一致,一個(gè)是utf8_general_ci,另一個(gè)是utf8mb4_0900_ai_ci
- 具體原因可能是因?yàn)榫€上服務(wù)器和本地服務(wù)器的mysql版本不同導(dǎo)致的,在覆蓋的時(shí)候出現(xiàn)了問題
2. 解決方案
# 查看各個(gè)字段的字符集規(guī)則: show full columns from 表名; # 修改字段的字符集: ALTER TABLE 表名 CHANGE 字段名 字段名 VARCHAR(100) CHARACTER SET utf8 COLLATE utf8_general_ci; # 修改表的默認(rèn)字符集: ALTER TABLE 表名 DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci; # 查看數(shù)據(jù)庫編碼: SHOW CREATE DATABASE db_name; # 查看表編碼: SHOW CREATE TABLE tbl_name;
3. 具體操作
- 這邊我是一個(gè)字段一個(gè)字段的改 把兩個(gè)表的字段都統(tǒng)一成了utf8_general_ci格式
ALTER TABLE 表名 CHANGE 字段名 字段名 varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci;
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
解決出現(xiàn)secure_file_priv null的問題
這篇文章主要介紹了解決出現(xiàn)secure_file_priv null的問題,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2021-03-03MySql的存儲過程學(xué)習(xí)小結(jié) 附pdf文檔下載
這篇文章主要是介紹mysql存儲過程的創(chuàng)建,刪除,調(diào)用及其他常用命令2012-03-03mysql實(shí)現(xiàn)將字符串字段轉(zhuǎn)為數(shù)字排序或比大小
這篇文章主要介紹了mysql實(shí)現(xiàn)將字符串字段轉(zhuǎn)為數(shù)字排序或比大小,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-06-06