web-dev-qa-db-ja.com

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

複数のコース、書籍、および仕事で、「短めの」テキストのデフォルトの一種としてVARCHAR(255)として定義されたテキストフィールドを見てきました。 A nice round number である以外に、255の長さが頻繁に選択される理由はありますか?正当な理由があった過去のある時期からのホールドアウトですか(今日適用されるかどうか)。

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


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

130
Kip

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

84
chaos

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

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

143
Robert Harvey

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

19
Charles Bretana

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

15
MusiGenesis

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

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

それは役立ちますか?

11
exec.-

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

いいえ。253を宣言して2バイトを節約することはできません。varcharの実装は、長さカウンターと可変長の非終端配列である可能性が高いです。これは、varchar(255)に「hello」を格納すると、6バイトを占有することを意味します。長さ(数字5)に1バイト、5文字に5バイトを使用します。

7
Stefano Borini

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

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

3
gahooa

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

3
Joaquin Montes

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

0
Booji Boy