sql-server – 使用MAX文本或更具体,更小的类型
有人正在审查我的DDL代码以创建表并建议,当他们看到我看到使用VARCHAR(256)字段用于文本时我希望它非常小,比如名字或其他什么,我应该总是使用VARCHAR(MAX)和链接 Why use anything but varchar(max).我读了它,但它似乎过时了,因为它专注于2005年,似乎没有提供任何真正的理由在所有文本字段上每行可能分配高达2 GB. 从性能,存储等角度来看,如何在现代版本的SQL Server中决定是使用VARCHAR(MAX)还是更小的更具体类型? (例如,2008年,2012年,2014年) 解决方法
没有. 对于SQL Server,只有在没有替代方法时才应指定最大数据类型.应该选择正确的基类型(varchar或nvarchar),并指定适合于要存储的数据的显式最大长度. 无论列的类型是varchar(n)还是varchar(max),物理存储都是相同的,因此这不是问题. 不选择(n)varchar(max)的原因在于功能,计划质量和性能. 详尽的列表可能不实用,但除其他外,最大列: 特征 >需要单独的约束来强制执行最大长度 性能 >在执行引擎中需要特殊处理,以考虑可能非常大的大小.通常,这涉及使用效率较低的代码路径和流式接口 总之,不必要地使用max说明符有很多微妙(和不良)的副作用,这样做是没有意义的.使用单一声明的轻微“便利”不是一种补偿. 在上下文中评估每个类型,使用正确的基类型(varchar或nvarchar)和合理的显式长度. 进一步阅读: > Performance comparison of varchar(max) vs. varchar(n)由Remus Rusanu (编辑:广州站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |