我已经在MSDN论坛和这里读到了这一点,但我仍然不清楚。我认为这是正确的: Varchar(max)将被存储为文本数据类型,所以这有缺点。因此,假设您的字段将可靠地少于8000个字符。就像我的数据库表中的BusinessName字段。在现实中,企业名称可能总是少于500个字符(从我的帽子里抽出一个数字)。看起来我遇到的很多varchar字段都在8k字符数以下。
那么我应该将该字段设置为varchar(500)而不是varchar(8000)吗?据我对SQL的理解,这两种语言没有区别。因此,为了方便起见,我希望将所有varchar字段定义为varchar(8000)。这有什么缺点吗?
相关:Size of varchar columns (我觉得这个没有回答我的问题)。
发布于 2010-01-06 06:53:41
从处理的角度来看,使用varchar(8000)和varchar(500)没有区别。定义一个字段应该包含的最大长度,并使varchar达到这个长度,这更像是一种“良好的实践”。它可以用来辅助数据验证。例如,将州缩写设置为2个字符,或将邮政编码设置为5或9个字符。当你的数据与其他系统或用户界面进行交互时,这是一个更重要的区别,在这些系统或用户界面中,字段长度非常关键(例如,大型机平面文件数据集),但现在我认为这更像是一种习惯。
发布于 2010-01-06 06:53:02
理想情况下,您可能想要更小的长度(500不是合理的大小),并确保客户端验证在数据太大时捕获并发送有用的错误。
虽然varchar实际上不会在数据库中为未使用的空间保留空间,但我记得SQL Server的不同版本对数据库行宽于某一字节数(不记得确切的计数)有一种不满,实际上会丢弃任何不适合的数据。其中一定数量的字节是为SQL Server内部的内容保留的。
https://stackoverflow.com/questions/2009694
复制相似问题