MySQL字符集不同表關聯索引失效

2021-10-03 12:14:32 字數 691 閱讀 4285

utf8mb4字符集的表mb4與utf8字符集的表utf8 關聯會產生索引失效的問題。utf8mb4 是utf8的超集,遵循小轉大的規則,即將utf8 字元轉換成utf8mb4。

例如 mb4和utf8表都包含索引欄位name,做表關聯有兩種情況。

大關聯小,小索引失效

以mb4表為基準表,left join utf8,utf8表name欄位索引失效。

select

*from mb4 t1 left

join utf8 t2 on t1.name = t2.name where t1.name =

'aaaa'

;

原因:關聯時遵循小轉大規則,t2.name 欄位被轉換成utf8mb4字符集,但是表中的name索引欄位仍是utf8, utf8mb4!=utf8,導致索引失效。

2.以utf8表為基準表,left join mb4,mb4表name欄位索引有效

select

*from utf8 t2left join mb4 t1 on t1.name = t2.name where t2.name =

'aaaa'

;

原因:關聯時遵循小轉大規則,t2.name 欄位被轉換成utf8mb4字符集,此時t1表中的name索引欄位仍是utf8mb4,與表字段相符,索引有效。

mysql 集群字符集 Mysql 字符集

字符集與字元比較 字符集字符集是某種字元的集合,比如最常見的ascii碼,由127個字元組成,只需要乙個位元組就能表示 我們常說的字符集還是gbk iso utf8 mysql 我們使用得最多的字符集就是gbk 和 utf8了 他們都是變長字符集,如果字元在ascii範圍內就使用乙個位元組表示,其他...

mysql字符集 MySQL字符集選擇

一 怎樣選擇合適的字符集 對mysql資料庫來說,字符集很重要,因為資料庫儲存的資料大部分都是各種文字,字符集對資料庫的儲存,處理效能都會有所影響。主要考慮一下幾方面的因素 1.滿足應用支援語言的需求,應用處理各種各樣的文字,發布到使用不同語言的國家或地區,可以選擇unicode字符集,mysql的...

mysql api 字符集 MySQL字符集

mysql字符集包括字符集 character 和 collation 兩個概念。字符集是用來定義mysql儲存字串的規則,校對規則則是定義了比較字串的方式。字串和校對規則是一對多的 關係。使用命令 show collation like gbk 可檢視相關的校對規則 使用 show charact...