2012-02-15 19 views
10

電子メールアドレスの場合、SQL Serverの列にどれくらいのスペースを割り当てる必要がありますか。SQL Serverの電子メールアドレスのNVARCHAR(?)

私はウィキペディアにこの定義を見つけました:

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

を電子メールアドレスの形式が ローカル部分は、最大64文字の長さであり、ローカルパート@ドメインとドメイン名であります の最大文字数は253文字ですが、最大文字数は、最大で256文字です。 の転送パスの長さは、電子メールアドレス 全体を254文字以内に制限します。

そして、この1:

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

だから今のために、電子メールアドレスに許さ総文字数が64(ローカル パート)+ 1( "@" 記号)+ 255(ドメインでありますpart)= 320

将来的には、ローカル部分の制限 を128文字に増やすことが可能です。合計384文字になります。

答えて

13

私は、後者の計算に基づいて常に320を使用してきました。人々がそれを虐待したり、そこに迷惑をかけたりしない限り、あなたはもっと*を許すことはありません。それははあなたが合法的に長い電子メールアドレスを持っている場合、あなたはイライラするユーザーを持っているようにすることができますが、今戻って、スキーマ、コード、パラメータなどを更新する必要があります。 (電子メールサービスプロバイダ)と仕事をするために、私が当てた最長の電子メールアドレスは約120文字でした。そして、彼らはちょうど笑顔のために長い電子メールアドレスを作っていたことは明らかでした。メモリ許可の推定値は、様々な幅の列が半装着されていることを前提にしているので、

* 厳密には正しく、ため、同じデータを格納し、より広い列はリードを持つことができないと、特定のクエリの非常に異なる性能特性。

そして、私はNVARCHARが電子メールアドレスに必要かどうか議論しました。私はまだUnicode文字の電子メールアドレスに出くわしました。標準でサポートされていることは分かっていますが、それほど多くの既存のシステムはそうではありません。それがあなたの電子メールアドレスであれば、かなりイライラします。

NVARCHARがスペースを2倍にしているのは事実ですが、SQL Server 2008 R2では、Unicode圧縮の利点があります。NVARCHAR列のすべての非Unicode文字を基本的にASCIIとして扱います。もちろん、圧縮はEnterprise +でのみ利用できます。

スペース要件を減らすもう一つの方法は、観察されたすべてのドメイン名に対してセントラルルックアップテーブルを使用し、ユーザにLocalPartDomainIDを保存し、一度。はい、これは面倒なプログラミングになりますが、hotmail.comアドレスが80,000の場合、コストは80,000 x 11バイト(または圧縮ではなく)ではなく80,0000 x 4バイトになります。ストレージやI/OがCPUではなくボトルネックである場合、これは調査する価値のあるオプションです。

私はここでこれについて書きました:

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

+1

@tugberk通知遅延で申し訳ありませんが、私はここでこれについて書きました:http://www.mssqltips.com/sqlservertip/2657/storing-email-addresses-more-infficiently-in-sql-server/ –

+1

ちょうどinfo:ASP.NETメンバーシッププロバイダは、Emailフィールドに "nvarchar(256)"を使用してデータベース "AspNetUsers"を作成します。 – Yanga

+0

@ Yanga ugh、ありがとう。 –

0

を私はVARCHAR(320)は、ASCIIベースのドメイン名やメールアドレスの通常の限界だろうと思います。しかし、いつかすぐに出現するユニコードのドメイン名が見え始めるでしょうか?

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

たぶんNVARCHAR(320)は、我々が使用して開始する必要があります何ですか?

+1

ドメイン名と電子メールアドレスにUnicode文字を広く採用するには、まずは長い時間がかかると私は正直信じています。あなただけの電子メールサーバーの数は、それにバーフをつけるだけの大きな勢いを表しています。 –

+0

あなたは正しいです。長さについてそれほど気にしていれば、ユニコードでも同じことをする必要があります。 – tugberk

関連する問題