なぜ単にVARCHAR
の代わりにVARCHAR(length)
を指定する必要があるのですか?とにかく動的です。
UPD:必須であるという事実に特に困惑しています(たとえば、MySQLで)。
VARCHARの「長さ」はコンテンツの長さではなく、コンテンツの最大長です。
VARCHARの最大長は動的ではなく、固定されているため、指定する必要があります。
最大サイズを定義したくない場合は、VARCHAR(MAX)を使用します。
まず、すべてのデータベースで必要なわけではありません。 SQL Server を見てください。オプションです。
とにかく、フィールドのコンテンツの最大サイズを定義します。それ自体は悪いことではなく、意味を伝えます(たとえば、フィールドに国際番号が必要ない場合の電話番号)。
データの制約として見ることができます。制約に違反するデータを保存しないようにします。概念的には、たとえば正の値のみが入力されることを保証する整数列のチェック制約。
データベースが保存しているデータについて知っているほど、リクエストを使用してデータを検索/追加/更新するときに最適化を行うことができます。
可能なパフォーマンスがありますimpact
:MySQLでは、temporary tables
およびMEMORY tables
VARCHAR
列を固定長列として格納し、最大長までパディングします。
必要な最大サイズよりもはるかに大きいVARCHAR
列を設計すると、必要以上のメモリを消費します。これはcache efficiency, sorting speed
など.
だから、あなたが来る文字列の下にある最大長を与えます。キャラクターの最大長を10にする場合のように、長さを100以上にしないでください。
答えはあなたですdo n't need to、it is optional。
文字列が特定の長さを超えないようにする場合にあります。
から ウィキペディア :
Varcharフィールドは、制限までの任意のサイズにすることができます。制限はデータベースのタイプと異なり、Oracle 9iデータベースには4000バイトの制限があり、MySQLデータベースには65,535バイトの制限(行全体)およびMicrosoft SQL Server 2005 8000バイト(varchar(max)が使用されない限り)最大ストレージ容量は2,147,483,648バイトです)。