varcharまたはvarbinary列を作成するときにmaxに大きな値を選択することの欠点は何ですか?
私はMSSQLを使用していますが、これは他のデータベースにも関連すると思います。
ありがとう
varcharまたはvarbinary列を作成するときにmaxに大きな値を選択することの欠点は何ですか?
私はMSSQLを使用していますが、これは他のデータベースにも関連すると思います。
ありがとう
これは、特定の列に大量のデータを格納することが合理的かどうかによって異なります。
多くのデータを適切に格納できない列 (つまり、従業員の名前を VARCHAR(1000) として) を宣言すると、さまざまな問題が発生します。
RDBMS に依存します。IIRC、MySql は 255 文字を超える varchar に 2 バイトのオーバーヘッドを割り当てます (varchar の長さを追跡するため)。MSSQL <= 2000 では、8060 バイトを超える行サイズを割り当てることができますが、実際に 8060 バイトを超える行を INSERT または UPDATE しようとすると失敗します。SQL 2005[1] では挿入が許可されますが、オーバーフローのために新しいページが割り当てられ、ポインタが残されます。これは明らかにパフォーマンスに影響します。
[1] varchar(max) はやや特殊なケースですが、フィールドの長さが 8000 を超える場合、または行の長さが 8060 を超える場合にもオーバーフロー ページが割り当てられます。データ行オプションで。
大規模なデータが何らかの形で (外部インターフェイスなどから) 入り、アプリがそれを処理するように設計されていない場合、アプリケーションが壊れるリスクが追加される可能性があります。
適切な設計として、常にフィールドのサイズを現実的な値に制限する必要があります。