196

複数のコース、本、およびジョブで、「短い」テキストのデフォルトの一種としてVARCHAR(255)として定義されたテキストフィールドを見てきました。良いラウンド数である以外に、255の長さが頻繁に選択される正当な理由はありますか?それは、正当な理由があった過去のある時期からのホールドアウトですか(今日適用されるかどうかにかかわらず)?

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


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

4

10 に答える 10

197

255は、8ビットの数値でカウントできる最大の文字数であるために使用されます。これにより、255を超える文字をカウントするために別のバイト全体を無駄にすることなく、8ビットカウントを最大限に活用できます。

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

于 2009-08-01T20:56:29.780 に答える
127

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

于 2009-08-01T20:57:31.850 に答える
24

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

于 2009-08-01T21:17:17.880 に答える
22

私は文字通りの質問に答えます: いいえ、 VARCHAR(255) が頻繁に使用されるのを見る正当な理由はありません(他の回答で説明されているように、実際には理由がありますが、良いものではありません)。アーキテクトが VARCHAR(255) ではなく VARCHAR(300) を選択したために壊滅的に失敗したプロジェクトの例はあまりありません。VARCHAR ではなく CHAR について話していたとしても、これはほとんど重要でない問題です。

于 2009-08-01T21:24:37.537 に答える
16

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

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

それは役に立ちますか?

于 2012-01-17T14:02:04.317 に答える
9

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

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

于 2009-08-01T21:26:17.097 に答える
4

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

于 2010-11-26T15:19:32.857 に答える
4

符号なし1バイトの数値には、[0-255]の範囲を含めることができます。したがって、255が表示された場合、それは主にプログラマーが基本的に考えているため10です(冗談を言いますか?):)

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

于 2009-08-01T20:59:34.140 に答える