4
A
回答
6
這取決於在特定列中存儲大量數據是否合理。
如果聲明永遠不會正確地儲存大量數據的列(即僱員的名字爲VARCHAR(1000)),你最終得到的各種問題
- 許多,如果不是大多數客戶端API (即ODBC驅動程序,JDBC驅動程序等)在客戶端上分配足夠大的內存緩衝區以存儲特定列的最大大小。因此,即使數據庫只需要存儲實際數據,您也可能會顯着增加客戶端應用程序使用的內存量。
- 您從表定義中失去驅動數據驗證規則(或傳遞有關數據的信息)的能力。如果數據庫允許使用1000個字符的名字,那麼與數據庫交互的每個應用程序可能最終都會有自己的規則來規定員工姓名的大小。如果這不是通過在所有應用程序和表之間放置存儲過程層來緩解的,則這通常會導致各種應用程序擁有各種規則。
- 墨菲法則規定,如果允許1000個字符,某人最終將在該列中存儲1000個字符,或者至少有一個值足以導致一個或多個應用程序出錯(即沒有人檢查每個應用程序的員工姓名字段可顯示1000個字符)。
0
您可以將破壞你的應用程序的風險,如果一個大的數據得到了在以某種方式(如從外部接口)和您的應用程序不是設計來處理它。
作爲一個好的設計,您應該始終將字段的大小限制在一個現實的值。
4
取決於RDBMS。 IIRC,MySql爲varchar> 255個字符分配2字節開銷(以跟蹤varchar長度)。 MSSQL < = 2000將允許您分配大於8060字節的行大小,但如果您試圖插入或更新實際超過8060字節的行,則會失敗。 SQL 2005 [1]允許插入,但會爲溢出分配一個新頁面,並留下一個指針。顯然,這會影響性能。
varchar(max)有些特殊情況,但如果字段的長度大於8000或行大於8060,也會分配溢出頁面。這是MSSQL默認值,行爲可能會更改與數據行選項中的大類型。
相關問題
- 1. 很慢VARBINARY(MAX)選擇
- 2. 選擇任意值爲max
- 3. 在選擇語句中將Varbinary轉換爲Varchar
- 4. HttpPostedFileBase varbinary(max)
- 5. SQL Server VARBINARY(MAX)
- 6. mysql varbinary vs varchar
- 7. VarChar的最大行大小(MAX)
- 8. 是否varchar(max)= varchar?
- 9. Varchar(255)到Varchar(MAX)
- 10. 在表中使用VARCHAR(MAX)有缺點嗎?
- 11. 從表中選擇最大值(列)(列爲varchar)
- 12. 使用varchar(MAX)或varbinary(MAX)在SQL Server中存儲長度未定義的字符串
- 13. 選擇第二個MAX值
- 14. SQLite的VARCHAR缺省大小
- 15. 的數據類型爲varchar和varbinary(最大值)都在增加操作符
- 16. NHibernate的:存儲VARBINARY到MAX
- 17. varchar(max)變量的最大尺寸
- 18. VARCHAR(最大值),2008年爲varchar在2000
- 19. OutOfMemoryException SqlCommand VarChar(Max)
- 20. 主鍵 - 用於UUID主鍵的VARBINARY或BLOB或VARCHAR
- 21. Varbinary(max)圖像Visual Studio 2008
- 22. 如何從VARBINARY(MAX)WPF
- 23. SQL - 選擇+ MAx()
- 24. SQL Server Varchar到VarBinary轉換
- 25. MySQL的選擇MAX獨特價值
- 26. 複製varbinary(max)字段時超出最大行大小
- 27. varchar的最大值
- 28. 選擇MAX或ORDER BY限制1
- 29. 從數據類型爲varchar隱式轉換爲VARBINARY(最大)是不允許的
- 30. Oracle中的VARCHAR(MAX)與VARCHAR(n)