2012-07-19 70 views
0

根據MySQL文檔,VARCHAR將使用1個字節來表示設置在該列中的所有值都是長度0-255的字符串的長度,以及以其他方式2個字節將使用。的MySQL VARCHAR大小存儲 - 一個字節,兩個字節的轉換

,如果你有一列裏面全是255或更少的大量數據會發生什麼情況,以及項目後,輸入長度爲256的一個條目。重新格式化操作是否啓動以更新此列中的其他字符串以使用2個字節而不是1?除插入無效/忽略的數據之外,是否有辦法搶先執行此操作?像myField VARCHAR(1000) not null always-use-two-bytes,(顯然它會比這更乾淨......但你明白了)。

+0

任何理由你擔心嗎?如果您不想允許插入256+個字節,則可以改爲使用字段varchar(255)。 – 2012-07-19 16:30:35

+0

這不是我不想讓256+或更多的插入。我不想要的是在整個桌子的整個生命週期中進行一次桌面操作,並瞭解它如何處理這種轉換。我理解這個想法,通常情況下,如果某件事情可以處理超過255個事件,那麼它可能會提早進入其一生。我設想是一個靜態的過程,通常把100在填充的表,但表可能支持400後在應用程序的生命週期,過程決定把更多的數據在那裏,現在我們有一個大的調整大小。 – corsiKa 2012-07-19 16:37:15

+0

陷阱。如果所有的值都低於2字節長度,我不認爲mysql會減小字段大小,所以你可以通過儘早插入一個大值,然後用真實值進行更新來「總理」表格。 – 2012-07-19 16:43:24

回答

1

實際報價從文檔是:

A柱使用一個長度字節的值,如果不需要超過255字節,2個字節長度值是否可能需要多於255個字節。

這對我意味着什麼,如果你有varchar(256+),那麼它會從頭開始使用2個字節。