MySQL 的 utf8_general_ci 和 utf8_unicode_ci 有什麼區別,應如何選擇?

來源:互聯網
上載者:User

標籤:

一般的解說是 utf8_general_ci 速度較快,utf8_unicode_ci 準確性較好 … 但快在那裡,又好在什麼地方呢?

首先就其準確性說,這世界上有無數種文字,除了通用的英文使用我們較熟悉的 A-Z 字元外,還有很多種近似的寫法用於法文、德文、俄文等等…

光是一個 A 字就有數十種不同表現
為什麼不都用同一種 A 呢,幾十種多麻煩啊。事實上,它們在所屬的文字上都各有意義,可能代表不同的發音,也可能是其他東西。在某些語言上,同一個單詞不同發音可能就代表兩個意思。

 

校對規則

utf8_unicode_ci 及 utf8_general_ci 的用途就是對那些看起來不一樣的字元進行轉換,令我們進行排序比對時更方便準確。

以下面為例,直接看起來是不相等的,但在實際應用上是成立的,這就是 utf8_unicode_ci 及 utf8_general_ci 工作的結果。
Ä = A

Ö = O
Ü = U

而 utf8_unicode_ci 準確性較好就表現在它有更完整的字元對照表上,它甚至可以將一個特別字元轉換成多於一個英文字元,以德文中的 s 例:

在 utf8_unicode_ci 下面等式是成立
ß = ss

在 utf8_general_ci 只有這樣才成立
ß = s

 

定序

因為 utf8_unicode_ci 有更完整字元表及轉換規則,所以在排序的準確性上也比 utf8_general_ci 高一些。

utf8_general_ci 字元表的一部份

utf8_unicode_ci 有更完整的字元表

 

效能

同樣因為 utf8_unicode_ci 的字元表及轉換規則更複雜,所以在效能上比 utf8_general_ci 慢。

 

總結

如果你的應用是德文、俄文等等,或者需要精確處理國際化的內容,請用 utf8_unicode_ci 。
否則的話用 utf8_general_ci 就可以了。

 

備忘

雖然說 utf8_unicode_ci 的字集比較完整,但其實還是不全的,所以 MySQL 還提供了很多種其他語言的專用字集,用於特別的本地應用,詳細可以看看下面的官網連結

 

參考

MySQL 官方解說: http://dev.mysql.com/doc/refman/5.0/en/charset-unicode-sets.html

 

原文:http://www.cnopensource.org/2012/06/mysql-%E7%9A%84-utf8_general_ci-%E5%92%8C-utf8_unicode_ci-%E6%9C%89%E4%BB%80%E4%B9%88%E5%8C%BA%E5%88%AB%EF%BC%8C%E5%BA%94%E5%A6%82%E4%BD%95%E9%80%89%E6%8B%A9%EF%BC%9F/

 

 

轉自 http://blog.chedushi.com/archives/6462

MySQL 的 utf8_general_ci 和 utf8_unicode_ci 有什麼區別,應如何選擇?

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.