NVARCHAR(?),在SQL Server中的电子邮件地址

电子邮件地址,我多少空间应该给SQL Server中的列。

我发现在维基百科这样的定义:

http://en.wikipedia.org/wiki/Email_address

电子邮件地址的格式是本地部分@域所在的本地部分可能是最多64个字符长,域名可能最多有253个字符 - 而是一种前进的最多256个字符长度或反向路径限制了整个电子邮件地址,以不超过254个字符

而这一次:

http://askville.amazon.com/maximum-length-allowed-email-address/AnswerViewer.do?requestId=1166932

因此,现在,允许电子邮件地址总字符为64(地方部分)+ 1(“@”符号)+ 255(域部分)= 320

这有可能是在将来,他们会增加本地部分限制为128个字符。 这将使总共384个字符。

有什么想法吗?

--------------解决方案-------------

根据您的计算后我一直使用320。 它不花费你任何东西,让更多的,除非人们滥用它和垃圾的东西在里面。 它可能会让你花钱让少,因为你将有一个令人沮丧的用户,如果他们有更长的合法电子邮件地址,而现在你必须要回去和更新的模式,代码,参数等。在系统I用来工作与(电子邮件服务提供商),我遇到了最长的e-mail地址自然是约120个字符 - 很显然他们只是在进行长时间的e-mail地址笑着。

而且我辩论是否NVARCHAR是必要的电子邮件地址。 我还没有遇到使用Unicode字符的电子邮件地址 - 我知道标准的支持他们,但那么多现有的系统不这样做,这将是非常令人沮丧,如果这是你的E-mail地址。

编辑

虽然这是真的, NVARCHAR花费两倍的空间,与SQL Server 2008 R2可以从中受益的Unicode压缩,基本上将所有非Unicode字符在NVARCHAR列ASCII,所以你得到这些额外的字节回来。 当然,压缩只在企业+提供...

以降低空间要求的另一种方式是使用一个中央查找表对于所有观察到的域名,并存储LocalPartDomainID与用户,并存储每个唯一域名仅一次。 是的,这使得更多的繁琐程序,但如果你有80000 hotmail.com地址,成本80,0000×4字节而不是80000×11个字节(或更少与压缩)。 如果存储或I / O的瓶颈,而不是CPU,这绝对是值得探讨的一个选项。

我写这个位置:

http://www.mssqltips.com/sqlservertip/2657/storing-email-addresses-more-efficiently-in-sql-server/

我猜VARCHAR(320)将成为基于ASCII的域名和电子邮件地址的正常范围。 但不会,我们开始看到不久的某个时候出现的Unicode域名?

http://en.wikipedia.org/wiki/Internationalized_domain_name

也许NVARCHAR(320)是我们应该开始使用?

你需要存储在此列多语言数据? 如果没有,请不要使用NVARCHAR,使用VARCHAR。

NVARCHAR会花费你的空间的两倍。

关于长度,没关系那么多。 如果您正在使用VARCHAR,只有邮件的实际长度将被储存,所以我觉得128是绰绰有余

分类:SQL 时间:2015-03-16 人气:7
分享到:

相关文章

Copyright (C) 55228885.com, All Rights Reserved.

55228885 版权所有 京ICP备15002868号

processed in 1.996 (s). 10 q(s)