2011-11-15 53 views
1

根據MySQL manual,MySQL包含字符集支持,它使我們能夠使用各種字符集存儲數據,並根據各種排序規則執行比較。可以在四個不同級別指定字符集:什麼是支持多種語言的數據庫的理想編碼設置?

  • 服務器
  • 數據庫

假設我有一個存儲以下數據庫:

  • 用戶ID(INT)
  • 郵箱地址(VARCHAR 50)
  • 用戶簡檔(TEXT - 多語言)
  • 系統標誌(CHAR 1 - AZ只)

之間Latin1UTF-8,我應該如何選擇四個不同層次以實現最佳性能?

ADD NOTE:這只是一個簡單的例子。在實際情況中,我希望有幾列存儲(a-zA-Z0-9),一列或兩列存儲多語言文本。這就是爲什麼我關心績效。

ADD NOTE2:我指的是存儲數百萬條記錄的數據庫。這就是爲什麼表現對我來說很重要。

+0

http://stackoverflow.com/questions/2708958/differences-between-utf8-and-latin1 – Yacov

+0

@ yytg,我知道UTF-8和Latin1之間的區別。現在我正在問如何在四個層面上應用它。 –

+0

這可能有助於http://stackoverflow.com/questions/367711/what-is-the-best-collat​​ion-to-use-for-mysql-with-php – Yacov

回答

0

您應該爲整個數據庫選擇相同的編碼。否則,作爲開發人員,您以後會感到困惑。並且由於文本是多語言的,因此只會將utf8作爲您選擇的編碼。

請注意,您也可以選擇數據庫連接的編碼。

+0

是的,我認爲服務器是指數據庫連接或實例,數據庫引用手冊上的模式。由於將有數百萬行處理,我不確定性能的影響。 –

1

我可能是錯的,但根據我的經驗,您選擇的字符集並不會對您的整體數據庫性能產生很大的影響(如果您開始將它們混合在不同的表中,現在可能會影響查詢性能)。

如果您要支持多種語言,請轉至utf8(或甚至utf16)。

+0

UTF-8是一到三個字節。它確實對內存有性能影響。我不確定查詢速度。 –

+0

一切都有某種影響,但在大多數情況下,'latin1'到'uft8'的差別太小了。 – Bjoern