Mysql

MySQL 的最佳通用字元集和排序規則

  • June 3, 2021

目前,每當我創建一個新的 MySQL 數據庫時,我使用 utf8mb4 作為字元集,使用 utf8mb4_unicode_520_ci 作為排序規則,例如:

CREATE DATABASE IF NOT EXISTS db_name
   DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_520_ci;

MySQL 是否有更新/升級的通用排序規則或字元集?

例如,如果有一個排序規則取代了 utf8mb4_unicode_520_ci,比如 utf8mb4_unicode_800_ci 或類似的東西?

謝謝你的幫助。

對於任何版本的 MySQL 或 MariaDB,使用utf8mb4其預設的COLLATION. (嗯,這在 5.5.3 之前是不可用的。)

0900 指的是 Unicode 的 9.00。

520 指的是 Unicode 的 5.20。

沒有數字是指 Unicode 的 4.00。

(數字越大“越好”。)

對於 postal_code、country_code、十六進製字元串、雜湊等列,請考慮使用CHARACTER SET ASCIICOLLATE ascii_general_ci來獲得大小寫折疊。

對於其他一些,例如 BASE64,使用,COLLATE ascii_bin因為大小寫折疊將是“錯誤的”。

請注意,

打開的設置CREATE DATABASE是和 儲存常式的預設設置。 on的設置是該表中列的預設設置。 連接設置對於使事情“正確”也非常重要。CREATE TABLE
CREATE TABLE

我會回答我自己的問題,希望它可以幫助將來的人。通過以下查詢,我能夠弄清楚我的伺服器上可用的最新排序規則是什麼:

SELECT COLLATION_NAME, CHARACTER_SET_NAME
FROM information_schema.COLLATIONS
WHERE
   ( CHARACTER_SET_NAME = 'utf8mb4' ) AND
   ( COLLATION_NAME LIKE '%utf8mb4_unicode%' )
ORDER BY COLLATION_NAME;

輸出:

+-------------------------------+-----------------------+
| COLLATION_NAME                | CHARACTER_SET_NAME    |
+-------------------------------+-----------------------+
| utf8mb4_unicode_520_ci        | utf8mb4               |
| utf8mb4_unicode_520_nopad_ci  | utf8mb4               |
| utf8mb4_unicode_ci            | utf8mb4               |
| utf8mb4_unicode_nopad_ci      | utf8mb4               |
+-------------------------------+-----------------------+

有了可用的選擇,我選擇了:

utf8mb4_unicode_520_ci

我想確保沒有更新的排序規則可用,例如 utf8mb4_unicode_800_ci。在我的系統上,utf8mb4_unicode_520_ci 是最新的。

引用自:https://dba.stackexchange.com/questions/292687