mysql 邮箱长度_数据库中电子邮件地址的最佳长度是多less?
數據庫中電子郵件地址的最佳長度是多less?
這里是我查詢的一部分,反映了EMAIL_ADDRESS列的數據types和屬性:
EMAIL_ADDRESS CHARACTER VARYING(20) NOT NULL,
然而, 約翰·桑德斯使用VARYING(256) 。
這表明我不一定正確地理解VARYING。
據我所知,電子郵件地址的長度是20個字符,而Jodn是256個字符。
John的代碼中的上下文
CREATE TABLE so."User" ( USER_ID SERIAL NOT NULL, USER_NAME CHARACTER VARYING(50) NOT NULL, EMAIL_ADDRESS CHARACTER VARYING(256) NOT NULL, // Here HASHED_PASSWORD so.HashedPassword NOT NULL, OPEN_ID CHARACTER VARYING(512), A_MODERATOR BOOLEAN, LOGGED_IN BOOLEAN, HAS_BEEN_SENT_A_MODERATOR_MESSAGE BOOLEAN, CONSTRAINT User_PK PRIMARY KEY(USER_ID) );
我從來沒有見過超過20個字符的電子郵件地址,普通人使用。
數據庫中電子郵件地址的最佳長度是多less?
電子郵件地址的最大長度是254個字符。
每個電子郵件地址由兩部分組成。 “@”符號之前的本地部分,以及后面的域部分。 在“user@example.com”中,本地部分是“用戶”,域部分是“example.com”。
本地部分不能超過64個字符,域部分不能超過255個字符。
電子郵件地址的本地+ @ +域部分的組合長度不得超過254個字符。 如RFC3696勘誤表ID 1690中所述 。
我從這里得到了這個信息的原始部分
來自Ask Metafilter :
我的數據來自323個地址的數據庫。 分布有一些高端exception值(正偏態)。 它通常分布沒有exception值(我testing了它)。
最小值:12第一四分位數:19平均值(w /離群值):23.04平均w / o離群值):22.79第三四等分:26最大值(離群值):47最大值
中位數:23模式:24標準 Dev(w / outliers):5.20標準 Dev(w / o outliers):4.70
基于包括exception值的數據的范圍68.2%的數據17.8-28.2 95.4%的數據12.6-33.4 99.7%的數據7.4-38.6
排除基于數據exception值的范圍68.2%的數據18.1 – 27.5 95.4%的數據13.4 – 32.2 99.7%的數據8.7 – 36.9
以下是在網站表單允許的電子郵件地址的最大安全長度是多less? Raycon的平均值略有不同(N = 50,496,平均值= 23):
我的工作電子郵件地址超過20個字符!
閱讀適當的RFC規范 :
“電子郵件地址的本地部分可能長達64個字符,域名最多可能有255個字符”
只要使用varchar(50) 。 更長的電子郵件一直是垃圾。
看看50個字符多長時間:
peoplewithanemail @ ddressthislongjustuseashorterone
正如其他人所說,超過20的方式。256 + 64聽起來不錯,是符合RFC。
如果你擔心性能或空間,如果你這樣做,那么我99.99999999999999%肯定是不成熟的優化 。
去大。
數據庫中的variables字符types不占用不必要的空間。 因此,沒有理由盡可能地限制這些領域。 根據一個人的名字,他們組織使用的命名scheme和他們的域名,地址可以很容易地超過20個字符。
RFC-2822中的本地部分和域名的長度沒有限制。 盡pipeRFC-2181將域名限制為255個八位字節/字符。
同樣,由于varchar只使用您存儲的string實際使用的空間,所以沒有理由對電子郵件地址長度有一個小的限制。 只要512去,不要擔心。 其他一切都是不成熟的優化
最初的最大值是320個字符(64 + 1 + 255,如其他答案所示),但是RFC 3696勘誤表1003指出:
但是,RFC 2821中對MAIL和RCPT命令中的地址長度有256個字符的限制。 由于不適合這些字段的地址通常不會有用,所以地址長度的上限通常應該被認為是256。
并從RFC 5321第4.5.3.1.3節:
4.5.3.1.3。 path
反向path或前向path的最大總長度是256個八比特組(包括標點符號和元素分隔符)
這是包括開幕和結束括號,所以它讓我們只有254個八位字節的電子郵件地址。
但是請記住,八位字節的數量可能不等于字符的數量(一個字符可能有兩個或更多的八位字節)。 另外, RFC第4.5.3.1節也指出可以有更多的字段,這是可能的,但不能保證服務器正確地捕獲它們。
然后,您可以/必須使用VARCHAR(254)來存儲電子郵件地址。
注意:在MySQL中,至less一個聲明為VARCHAR白色小于或等于255個八位字節的列將被存儲為1 byte + length (1是存儲長度),所以如果使用下限,則不會獲得空間。
CHAR(20)字段總是占用20個字符,無論是否全部使用。 (最后填充空格)VARCHAR(20)字段最長可能需要20個字符,但可能會占用較less的空間。 CHAR()的常量寬度的一個好處是快速跳轉到表中的一行,因為您可以計算它必須在的索引。 缺點是浪費空間。
如果您的表中有任何VARCHAR(x)列,那么常量大小的CHAR(x)的好處將會丟失。 我似乎記得,如果某些列是VARCHAR(),MySQL在后臺默默地將任何CHAR()字段轉換為VARCHAR()。
總結
以上是生活随笔為你收集整理的mysql 邮箱长度_数据库中电子邮件地址的最佳长度是多less?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 智能合约(区块链技术)全面阐述
- 下一篇: java替换指定位置的字符串