VARCHAR(255)が頻繁に使用される(別の長さとは対照的に)のに十分な理由がありますか?

StackOverflow https://stackoverflow.com/questions/1217466

質問

複数のコース、書籍、およびジョブで、<!> quot; shortish <!> quot;のデフォルトの種類としてVARCHAR(255)として定義されたテキストフィールドを見ました。テキスト。 素敵なラウンド数?正当な理由があった過去のある時期からのホールドアウトですか(今日適用されるかどうか)?

もちろん、文字列の最大長を何らかの方法で知っている場合は、より厳しい制限がより理想的であることを認識しています。ただし、最大長がわからないことを示すVARCHAR(255)を使用している場合は、<!> quot; shortish <!> quot;文字列。


注:この質問を見つけました( varchar(255)v tinyblob v tinytext )、これはVARCHAR( n )が n +1!バイトのストレージを n <!> lt; = 255、 n <!> gt; 255の場合、n +2バイトのストレージ。これが唯一の理由ですか? VARCHAR(256)と比較して2バイトしか保存しないため、VARCHAR(253)を宣言することでさらに2バイトを簡単に保存できるため、これは一種のarbitrary意的なようです。

役に立ちましたか?

解決

歴史的には、一部のDBMSでは255文字がVARCHARの最大長であることが多く、UTF-8を使用して列にインデックスを作成する場合(インデックスの長さのため)制限)。

他のヒント

255が使用されるのは、8ビット数でカウントできる最大文字数だからです。これは、255を超える文字をカウントするために別のバイト全体を必要とすることなく、8ビットカウントの使用を最大化します。

この方法で使用すると、VarCharはバイト数+ 1のみを使用してテキストを保存するため、フィールドの文字数に強い制限(50など)が必要な場合を除き、255に設定することもできます。 。

おそらく、SQL ServerとSybaseの両方(私がよく知っている2つを挙げると)は、VARCHAR列の文字数が最大255文字であったためです。 SQL Serverの場合、これは1996/1997年またはそれ以降のバージョン7で変更されました...

リテラルの質問に答えます:いいえ、よく使用されるVARCHAR(255)を見る正当な理由はありません(確かに理由 、他の回答で説明したように、良いものではありません)。アーキテクトがVARCHAR(255)ではなくVARCHAR(300)を選択したため、破局的に失敗したプロジェクトの多くの例は見つかりません。これは、VARCHARではなくCHARについて話している場合でも、ほぼ完全に重要でない問題です。

2^8と言うと256が得られますが、コンピューター用語の数字は0から始まります。 255を取得したら、IPのインターネットマスクまたはIP自体でプローブできます。

11111111 = 255は8ビット整数の最大値です:<=>

それは役立ちますか?

  

注:この質問を見つけました   (varchar(255)v tinyblob v tinytext)、   VARCHAR(n)は   n <!> lt; = 255、n + 2の場合、n + 1バイトのストレージ   n <!> gt; 255のストレージのバイト数。これは   唯一の理由?それは一種のようです   arbitrary意的です   に比べて2バイト節約   VARCHAR(256)、そして次のようにすることができます   簡単に別の2バイトを保存します   VARCHAR(253)を宣言します。

いいえ。 253を宣言して2バイトを節約することはありません。 varcharの実装は、ほとんどの場合、長さカウンターと可変長の非終端配列です。これは、<!> quot; hello <!> quot;を保存すると、 varchar(255)では、6バイトを占有します。長さ(数字5)に1バイト、5文字に5バイト。

符号なしの1バイト数には、範囲[0-255]を含めることができます。したがって、255が表示されるのは、プログラマーがベース10(ジョークを取得しますか?)で考えるからです。:)

実際、しばらくの間、MySQLでVARCHARに指定できる最大サイズは255でした。また、インデックス作成などの問題でTEXTよりもVARCHARを使用することには利点があります。

MsOffice(バージョン2000または2002まで)などの多くのアプリケーションでは、セルあたりの最大文字数は255でした。フィールドあたり255文字を超えるアプリケーションを処理できるプログラムからのデータの移動は悪夢でした。現在、制限はますます少なくなっています。

別の理由として、RDOやADOなどのWindows上の非常に古いデータアクセスライブラリ(ADO.NETではなくCOMバージョン)で、255文字を超える列からデータを取得するために特別なメソッドGetChunkを呼び出す必要があった可能性があります。 varchar列を255に制限した場合、この追加のコードは必要ありません。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top