还有其他原因限制VARCHAR字段的大小,使其尽可能接近数据大小吗?我在考虑:
- 性能:在选择、过滤和对数据进行排序时,使用较小的n是否有优势? - 内存,包括应用程序方面(C ++)? - 样式/验证:您认为限制列大小以强制非语义数据导入失败(例如200个字符的姓氏)有多重要? - 还有其他吗?
背景:我帮助数据集成商设计流入基于数据库的系统的数据流程。他们必须使用限制其数据类型选择的API。对于字符数据,只有n <= 255的VARCHAR(n)可用; CHAR,NCHAR,NVARCHAR和TEXT不可用。我们正在尝试制定一些“最佳实践”规则,并且问题出现了,即即使对于实际最大大小永远不会超过30个字节左右的数据,使用VARCHAR(255)是否会产生真正的不利影响。
一个表的典型数据量为100万至1000万条记录,最多有150个属性。查询性能(SELECT,经常具有广泛的WHERE子句)和应用程序端检索性能至关重要。