可能是重复问题:
数据库字段标准长度列表
简单来说,在数据库中允许的用户“全名”应该具有典型长度是多少?
当我创建users
表时,通常将其设置为varchar 31或32(根据性能)。你们使用什么,什么是标准/典型约定。
顺便说一句:我从未在电子邮件长度(因为我将其设置为254)和密码(哈希,32位长度)方面遇到问题。
可能是重复问题:
数据库字段标准长度列表
简单来说,在数据库中允许的用户“全名”应该具有典型长度是多少?
当我创建users
表时,通常将其设置为varchar 31或32(根据性能)。你们使用什么,什么是标准/典型约定。
顺便说一句:我从未在电子邮件长度(因为我将其设置为254)和密码(哈希,32位长度)方面遇到问题。
你的平均varchar字段允许的最大长度是多少?(254?)
如果随意缩短它,你将无法获得任何好处。对数字和字符进行细粒度大小控制基本上是过去的遗物,当每个字节都很重要时,这一点可能很重要-如果你正在处理数千万行或数千个查询/秒。对于普通数据库(即其中99%),性能取决于适当的索引和查询,而不是使行变小几个字节。
只有在存在某些正式规范定义最大长度时,才限制字段的长度,例如EAN代码的13位数字或ISIN的12个字符。
在我的设计中,全名始终是由名字、中间名、姓氏、前缀、后缀、学位、姓等计算出来的一个组合列。各个列的列表由应用程序的目标地区决定。"全名"的显示长度通常包含在应用程序设计中而不是数据库中。在SQL Server中,varchar(32)和varchar(256)之间没有空间节省。我选择使用varchar(256)。
我从不希望在会议上听到有人说"你的数据库设计无法容纳我们所有的数据"。
您总是给用户分配一个ID,以便可以使用ID进行连接和查找,而不是使用FullName,对吗?
如果你想的话,可以将它放在255。 varchars是一种可变长度存储类型。这意味着有1个字节用于存储字符串的实际长度,varchars不会占用比所需更多的空间,因此从存储方面来看,它并不重要。这在mysql页面上有描述。
描述可以在这里找到 http://dev.mysql.com/doc/refman/5.0/en/char.html 它在页面中间有图表。
当VARCHAR值被存储时,它们不会填充。处理尾随空格取决于版本。从MySQL 5.0.3开始,尾随空格在存储和检索值时保留,符合标准SQL。在MySQL 5.0.3之前,当将值存储到VARCHAR列中时,尾随空格会从值中删除;这意味着检索到的值也没有空格。
结论: 从存储方面来看,您始终可以选择255,因为它不会占用额外的空间,而且您不会遇到字符串被截断的问题。
问候