我的回答不是关于Max的用法,而是关于VARCHAR(max)与TEXT的原因。
在我的书中;首先,除非您可以绝对确定除了英语文本之外永远不会进行任何编码,并且人们不会引用外国位置的名称,否则您应该使用NVARCHAR或NTEXT。
其次,它是字段允许您执行的操作。
与VARCHAR相比,文本很难更新,但您可以利用全文索引和许多聪明的功能。
另一方面,VARCHAR(MAX)具有一定的模糊性,如果单元格的大小小于8000个字符,它将被视为行数据。如果它更大,它将被视为用于存储目的的LOB。因为在不查询RBAR的情况下无法知道这一点,所以对于需要确定数据及其读取成本的地方,这可能具有优化策略。
否则,如果您的使用相对普通,并且您不希望在数据大小方面出现问题(即您使用的是.Net,因此不必关心字符串/字符*对象的大小),那么使用VARCHAR(max)就可以了。