MySQL--utf8mb4排序規則


utf8mb4排序規則

在MySQL中常見的utf8mb4排序規則有:

  • utf8mb4_0900_ai_ci
  • utf8mb4_unicode_ci
  • utf8mb4_general_ci

當設置表的默認字符集為utf8mb4字符集但未明確指定排序規則時:

  • 在MySQL 5.7版本中,默認排序規則為utf8mb4_general_ci。
  • 在MySQL 8.0版本中,默認排序規則為utf8mb4_0900_ai_ci。

由於utf8mb4_0900_ai_ci排序規則時MySQL 8.0引入的排序規則,因此將MySQL 8.0版本的表導入到MySQL 5.7或MySQL 5.6版本時,會存在字符集無法識別的問題。

[Err] 1273 - Unknown collation: 'utf8mb4_0900_ai_ci'

參數控制

在MySQL 5.6版本中,參數collation_server用於設置服務器級別的默認排序規則。

  • 如果服務啟動時未指定參數collation_database的值,則默認繼承參數collation_server的值。
  • 如果創建數據庫時未指定排序規則,則默認使用參數collation_database的值。

參數character_set_database和collation_database在MySQL 5.7版本中被遺棄並將在后續版本中移除。
MySQL新增參數default_collation_for_utf8mb4用於控制使用utf8mb4字符集時的默認排序規則,取值為utf8mb4_0900_ai_ci或utf8mb4_general_ci
參數default_collation_for_utf8mb4在下列條件中生效:

  • 使用SHOW COLLATION and SHOW CHARACTER SET 命令時。
  • 在創建庫或修改庫指定utf8mb4但未指定編碼規則時。
  • 在創建表或修改表指定utf8mb4但未指定編碼規則時。
  • 在增加列或修改列指定utf8mb4但未指定編碼規則時。
  • 其他使用utf8mb4但未指定編碼規則時。

utf8mb4_unicode_ci和utf8mb4_general_ci對比

1、准確性

  • utf8mb4_unicode_ci排序規則基於標准unicode進行排序和比較,能處理特殊的字符,能在各種語音中精確排序。
  • utf8mb4_general_ci排序規則沒有基於標准unicode,無法處理部分特殊字符。

2、性能

  • utf8mb4_general_ci排序規則在排序性能上相對較好
  • utf8mb4_unicode_ci排序規則為處理特殊字符實現復雜的排序算法,性能略差
  • 在大部分場景下,兩者沒有明顯的性能差異


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM