2009-04-12 20 views
2

我有一個數據庫表,我們稱之爲國家。各國都有名字,簡稱和大陸。假設世界上任何國家最長的名字長達54個字符。我應該將最大尺寸設置爲54還是應該將其設置爲64還是別的?我的選擇會以任何方式影響查詢或存儲嗎?數據庫字段的大小是否重要?

我知道這可能看起來像預優化,但我發現自己經常選擇32,64,128等,我想知道這是否重要。

感謝

回答

3

一個堅實的DBMS應該知道什麼是最好的。如果您需要「54個字符」,但數據庫可以使用64個字符進行更好的搜索優化,它將自動在內部擴展數據字段。如果沒有,你將每行節省12個字符。

我不認爲這是你應該擔心的事情,只是寫下你需要的東西。

2

答案將是特定於RDBMS:

如果使用SQL Server(2000年起),一個varchar只使用空間存儲在它的實際字符(還有一個小的開銷),同比增長到宣佈的最大尺寸。

作爲一般的經驗法則,不要優化,直到你有問題。

1

如果您使用的是SQL Server,我強烈建議使用而不是所有字段都使用VARCHAR(8000)或VARCHAR(MAX).....您需要讓常識在這裏佔上風 - 將字段設置爲大,因爲你認爲你可能需要它,添加一些額外的意想不到的長度,你完成:-)

此外,我認爲這是一個好主意,保持它的幾個長度,你用過並重新開始。例如。對於街道地址或電子郵件等大部分字段,我可以使用VARCHAR(255),VARCHAR(50)用於諸如電話號碼之類的內容,VARCHAR(20)用於諸如郵政編碼等短字符串。

務實一點 - 找到適合你的風格。不要過度優化,但不要以另一種方式堅持下去。

Marc

+0

那麼,什麼是背後採用255而不是256的理由可變大小數據類型? – 2009-04-12 14:37:30

2

取決於數據類型。例如在ORACLE中 - 對於可變長度的字符串,varchar2數據類型將是一個不錯的選擇。您只需要定義字符串的最大長度 - varchar2(maxsize)。這意味着任何長度高達10的字符串都可以適用。列的長度取決於存儲在其中的實際字符串。

參見。 link text

在你的情況,如果你絕對相信任何一個國家的名字超過54個字符那裏,我會用大小​​54

相關問題