Ata*_*oss 72 sql t-sql sql-server-2008 varcharmax
在数据库设计方面,我有点老了,所以我完全在列中使用正确的数据大小.但是,在为朋友查看数据库时,我注意到他使用varchar(max)了很多.现在,我的想法是把它扔回给他并告诉他改变它.但后来我想到了它并且没有提出他不使用它的充分理由(如果你想知道的话,他会使用案例类型工具来生成数据库).
我一直在研究使用的主题,varchar(max)我不能真正想出他不使用它的任何理由.
他没有将列用于索引,位于数据库上的应用程序对输入有限制,因此它不允许在字段中使用大量条目.
任何帮助将不胜感激,以帮助我让他看到光:).
Rus*_*rke 34
我对此的回答不是关于Max的用法,而是关于VARCHAR(max)vs TEXT的原因.
在我的书中; 首先,除非你绝对可以肯定你永远不会编码除英文文本以外的任何内容,而且人们不会引用外国地名,那么你应该使用NVARCHAR或NTEXT.
其次,这是领域允许你做的事情.
与VARCHAR相比,TEXT很难更新,但您可以获得全文索引和许多聪明的东西.
另一方面,VARCHAR(MAX)有一些模糊性,如果单元格的大小<8000个字符,它将被视为行数据.如果它更大,它将被视为用于存储目的的LOB.因为如果不查询RBAR就无法知道这一点,这可能会为您需要确定数据以及需要花费多少读取的地方提供优化策略.
否则,如果您的使用相对平凡,并且您不希望数据大小有问题(您正在使用.Net的IE,因此不必担心您的字符串/ char*对象的大小)那么使用VARCHAR(max)就可以了.
Shi*_*iji 12
有一篇关于为什么不在这里使用varchar max的博客文章
编辑
基本区别在于存储数据的位置.SQL数据行的最大大小为8000字节(或者是8K).然后,2GB varchar(max)无法存储在数据行中.SQL Server将其"存储在行外".
因此,您可能会因为数据不在磁盘上的相同位置而受到性能影响,请参阅:http://msdn.microsoft.com/en-us/library/ms189087.aspx