2017-04-11 60 views
0

我將有一個包含單詞的大型數據庫,並且表格的一列 最多可以包含3個字母,但是 會有一些法語口音,如「ê」,「î」 ,O,U,char vs varchar用於法語口音(多字節字符)

一個例子將是具有一列,將可能有 [ID] [列2] 2 b 3 VF 4 EF 5噸

所以他們不會在任何時候都是固定的,有時候一些行將會是 有重音字符,據我所知這需要多一個字節。

我在想什麼是最好的選項來指定該列? CHAR可能更快,因爲他們將需要3個字節的最大每次 但很多時候會出現存儲1-2個字節

在另一方面VARCHAR是變長,而我沒有指定任何 但我已經閱讀過,字符對性能更好,因爲我會經常閱讀專欄文章 。

你認爲最好的是什麼?爲什麼?

回答

0

使用VARCHAR除非你正在談論固定長度的字段,如ISO國家代碼是保證是一定的長度。

還記得個字符字節不是一回事。該列和/或表格和/或連接和/或原始字符串的字符集將對實際存儲的內容產生影響。在某些字符集中,像é這樣的字符是一個字節,而在其他字符集中,如UTF-8,則是兩個字節。其他字符將是三個或四個字節,並且需要utf8mb4

如果你問CHAR(2)那麼這將允許任何字符設置爲列設置的兩個字符。

+0

謝謝,你解釋得很好。我的想法確切! – Ryan

+0

如果解決了您的問題,請將其標記爲已接受,如果您願意的話。有助於引導他人解決相同的問題。 – tadman

0

不成熟的優化。

獲取一份記錄超過幾乎任何你內行做昂貴。

幾乎總是簡單的VARCHAR(n)其中n是適合數據的長度。

CHAR(n)爲十六進制,COUNTRY_CODE,POSTAL_CODE,UUID等有用 - 東西都固定長度和CHARACTER SET ascii

當然,法國和歐洲的大部分地區都可以使用單字節CHARACTER SET latin1字符。但是這是一個小小的優化,它不值得做。

+0

感謝您的解釋 – Ryan