我应该使用VARCHAR(20)还是VARCHAR(255)来存储名称?

时间:2014-09-09 12:46:07

标签: sql database varchar string-length

在大学,我被告知使用VARCHAR(20)存储名字。 VARCHAR类型根据字符串长度占用空间,因此是否需要指定较小的长度范围?我问,因为RedBean ORM在默认情况下为长度为< = 255 chars的字符串创建VARCHAR(255)字段。

使用VARCHAR(20)和VARCHAR(255)之间有什么区别吗?除了可以存储的最大字符串长度:)

*我知道已经提出了这样的问题,但我从他们那里了解到,使用VARCHAR(255)并不是必需的,这可能会导致数据库应用程序中的内存消耗过多。

现实生活中的编程是什么?我应该对所有短文本输入使用VARCHAR(255)还是尽可能尝试限制长度?

5 个答案:

答案 0 :(得分:1)

因为255现在只是VARCHAR长度的任意选择。

说明:在MySQL 5.0.3之前(给出或采取一些点发布 - 我忘了)VARCHAR列的长度最多可以是255个字符,因此VARCHAR(255)通常用作默认值。但是,现在你可以在VARCHAR上使用最多65,535个字符,所以如果你还在使用" 255"那似乎是随意的,没有经过深思熟虑(或者你的架构只是旧的)。

答案 1 :(得分:0)

最好定义限制以减少默认数据库大小,并且还有助于验证目的。

答案 2 :(得分:0)

除非你知道你的数据,否则使用20个字符的决定与255一样任意。

您可以使用varchar(max),但这会改变数据的存储方式并影响性能;但是,如果不了解您的应用程序和数据的大小/数量,则很难提供建议。

答案 3 :(得分:0)

据我所知,使用varchar(20),你告诉该字段将包含不超过20个字符。 首先根据它将保留的内容(名称或地址等)确定指定字段的理想范围。它总是有效地使用尽可能小的长度。

答案 4 :(得分:0)

除非你需要那么多空间,否则

VARchar(255)通常都是选择。你总是把所有领域变成他们需要的大小,而不是更多。有几个原因。 ONe是记录的行大小有限制。通常你可以创建一个大于限制的行,但是当你第一次尝试输入超过限制的数据时,它将失败。这是一件坏事,可以通过使用较小的字段大小来实现。较大的字段大小也会鼓励输入不良信息。如果用户知道他们在一个领域有很大的空间,他们会在那个领域而不是那些数据中记录,我已经看到了这样的宝石(这是过去工作的真实例子)“跟胖女孩说话,因为金发女郎没用“。在长度太长的领域。如果你可以提供帮助,你不想给垃圾留出空间。数据错误意味着数据输出不良。

更宽的页面也可能访问速度较慢,因此限制字段大小是数据库的最佳利益。

在任何情况下都不应对任何字符串类型字段使用nvarchar(max)或varchar(max),除非您打算某些记录包含超过4000个字符。这些字段无法编入索引(在SQL服务器中,在进行设计时知道自己的数据库限制)并且不加选择地使用它们非常糟糕,并且会导致数据库慢于慢。

名字很棘手,很难确定大小,所以有些人会变大。但是25-50比255更合理。它可能会根据您存储的名称类型而有所不同,例如,如果公司与人名混在一起,那么该字段将需要更宽。如果您要存储许多外国名称,您需要知道该国家/地区名称的长度是多少。有些国家的名字通常比其他国家长。并且考虑到作为名字的fara,不管这个人是否使用他们的中间名以及是否有任何地方存储它都会有所不同。对于拥有多个中间名或使用其婚前姓名作为中间名但仍然使用其他名字的人,例如玛丽·伊丽莎白·安妮特·冯·米德尔斯沃思·贾米森,这一点尤其适用 - 你可以看到这样的名字有多难分解为first,middle和last,大多数名称可能最终出现在firstname列中。