電子メールアドレスは基本的に無期限に長くなる可能性があるため、varchar電子メールアドレスフィールドに設定するサイズは任意です。しかし、私は「標準」が何であるか疑問に思っていましたか?あなたはどれくらいの時間それを作りますか? (名前フィールドの同じ質問...)
更新:メールアドレスの最大長は320(<= 64名前部分、<= 255ドメイン)のようです。これを使いますか?
理論上の制限は本当に長いですが、これらの長いメールアドレスについて本当に心配する必要がありますか?誰かが100文字のメールでログインできない場合、本当に気になりますか?実際にはできないことを望んでいます。
いくつかの統計データは、問題にいくらかの光を当てるかもしれません。 1000万を超える電子メールアドレスを持つデータベースを分析しました。これらのアドレスは確認されていないため、無効なアドレスがあります。ここにいくつかの興味深い事実があります、
40を超えるものはすべて破棄して、DBをクリーンアップしました。良いニュースは、誰も苦情を言っていないことですが、悪いニュースは多くのレコードがクリーンアップされていないことです。
私は過去に255をやったばかりです。なぜなら、それは短い入力の入念な標準だからです。それ、そして私は習慣の生き物です。
ただし、最大値は319なので、列でnvarchar(320)
を実行します。 @
!
nvarchar
は不要なスペースを使用しないため、20文字のメールアドレスしかない場合は、20バイトしか使用しません。これはnchar
とは対照的です。これはalwaysで最大値を取ります(値にスペースを右詰めします)。
Unicodeなので、nvarchar
の代わりにvarchar
も使用します。電子メールアドレスの変動性を考えると、これは間違いなく進むべき方法です。
次のメールアドレスは94文字のみです。
i.have.a.really.long.name.like.seetharam.krishnapillai@AReallyLongCompanyNameOfSomeKind.com.au
92歳のテクノフォーブでさえ、ニースの短いGmailアドレスにサインアップする方法を見つけて、登録ページに入力するのではなく、それを使用するだけです。
ディスク容量はおそらく問題ではありませんが、ユーザー入力フィールドを必要以上に長くすることには少なくとも2つの問題があります。
私は50文字が好きです:
100万人に1人のユーザーが私のアプリを使用するために他のメールアドレスを使用する必要がある場合は、そうしてください。
(統計では、誰も実際にメールアドレスに約40文字以上を入力しないことが示されています。例:ZZ Coderの回答 https://stackoverflow.com/a/1297352/87861 )
あなたが本当にそれについて熱心な場合は、ユーザー名varchar(60)、ドメインvarchar(255)を作成してください。次に、単一のフィールドとして実行するよりもわずかに速い、ドメインの使用に関するとんでもない統計を実行できます。最適化について本当に熱心に思っているなら、それはあなたのSMTPサーバーがより少ない接続/より良いバッチ処理でメールを送信できるようにするでしょう。
RFC 5321(現在のSMTP仕様、RFC2821は廃止):
4.5.3.1.1。ローカルパート
ユーザー名または他のローカル部分の最大合計長は64です
オクテット。4.5.3.1.2。ドメイン
ドメイン名またはドメイン番号の最大合計長は255オクテットです。
これはlocalpart @ domainのみに関係し、合計320 ASCII(7ビット)文字)になります。
ローカル部分とドメインを別々のフィールドに分割するなどして、データを正規化する場合は、次のことに注意してください。
このテキストによると、適切なRFCドキュメントに基づいて、320ではなく254です。 http://www.eph.co.uk/resources/email-address-length-faq/
Edit:WayBack Machineの使用: https://web.archive.org/ web/20120222213813/http://www.eph.co.uk/resources/email-address-length-faq/
メールアドレスの最大長は?
254文字
有効な電子メールアドレスの最大サイズに関して混乱があるようです。ほとんどの人は、320文字(ユーザー名に64文字+ドメインに255文字+ @記号に1文字)と信じています。他の情報源は、129(64 + 1 + 64)または384(128 + 1 + 255、将来的にユーザー名の長さが2倍になると仮定)を示唆しています。
この混乱は、「堅牢性の原則」に注意する必要があることを意味します(「開発者は既存のRFCに厳密に準拠するソフトウェアを注意深く作成する必要がありますが、それらのRFCと一致しないピアからの入力を受け入れて解析する必要があります。」-ウィキペディア)メールアドレス。さらに、いくつかのソフトウェアは、素朴な仮定、たとえば50文字で十分だと考えています(例)。 200文字のメールアドレスは技術的には有効かもしれませんが、ほとんどのWebサイトまたはアプリケーションがそれを拒否した場合には役に立ちません。
実際の最大メール長は現在254文字です。
「RFC 3696の元のバージョンは、実際には320が最大長であると言っていましたが、John Klensin(ICANN)はその後、これが間違っていることを受け入れました。」
「これは、ドメインの最大長(255文字)+メールボックスの最大長(64文字)+ @記号= 320文字の単純な算術演算から生じます。このカナードは、実際にはRFC3696の元のバージョンで文書化されています。実際には256文字のSMTPトランザクションのパス要素にRFC5321からの制限があります。ただし、これにはメールアドレスを囲む角括弧が含まれているため、メールアドレスの最大長は254文字です。 -ドミニク・セイヤーズ
私はvarchar(64)を使用しています
電子メールの場合、仕様に関係なく、実質的に常に512(nvarchar)を使用します。名前と姓は似ています。
本当に、少し余分なデータがあることにどれだけ気を配るかを調べる必要があります。私にとって、ほとんどの場合、それは心配ではないので、私は保守的な側で過ちを犯します。しかし、論理的かつ正確な手段により、スペースを節約する必要があると判断した場合は、そうしてください。しかし、一般的には、フィールドサイズを控えめにしてください、そして人生は良いものでなければなりません。
おそらくすべての電子メールクライアントがRFCをサポートしているわけではないことに注意してください。そのため、それが何を言おうとも、実際にはさまざまなことに遭遇することがあります。