这很简单,数据库中用户允许的“全名”的典型长度应该是多少?
当我创建users
表时,我通常将其设置为varchar 31或32(根据性能)。你们有什么用,什么是标准/典型的惯例。
旁注:我从未在电子邮件长度(因为我设置了254)和密码(哈希,32长度)方面遇到问题。
答案 0 :(得分:6)
您的平均varchar字段允许的最大值(254?)。
你没有通过任意缩短来赢得任何东西。数字和字符的细粒度控制或多或少是过去的遗留物,当每个字节都很重要时。今天它很重要 - 如果你正在处理数万或数亿行,或每秒数千次查询。对于您的普通数据库(即99%),性能来自正确的索引和查询,而不是使您的行减少几个字节。
当存在定义最大长度的形式规范时,仅限制字段的长度,例如EAN代码的13位数或ISIN的12个字符。
答案 1 :(得分:2)
在我的设计中,全名始终是由第一个,中间,最后一个,前缀,后缀,学位,姓氏等组成的计算列。各列的列表由应用程序的目标本地确定。 “全名”的显示长度通常包含在应用程序设计中,而不是数据库中。在varchar(32)和varchar(256)之间的SQL Server中没有任何空间节省。 Varchar(256)是我的选择。
当有人说“您的数据库设计无法保存我们的所有数据”时,我绝不想参加会议。
您总是为用户分配ID,以便您可以使用ID而不是FullName加入并进行查找,对吗?
答案 2 :(得分:1)
我建议至少 128。
答案 3 :(得分:0)
如果你愿意,你可以把它放在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之前, 尾随空格被删除 将它们存储到a中的值 VARCHAR列;这意味着 检索中也没有空格 值。
结论: 存储明智的你总是可以使用255,因为它不会占用额外的空间而且你不会因字符串被切断而引入故障。
格尔茨