17

私の質問は、SQLで列を生成する際に何を使用するのが良いかということです。nvarchar(varchar)のサイズを2(32、64、128)の乗算にする必要がありますか、それとも問題ではなく、完全な数値の例「100」、「50」を使用できますか?

理由のある回答ありがとうございます

皆さんこんにちは

4

5 に答える 5

20

違いはありません。データに適したサイズを使用してください。

たとえば、SQL Serverの場合、レコードの構造を見ると、サイズが、テーブル内の前のレコード、null値、およびその他の要因に依存するレコードオフセットに変換されることがわかります。特に、行の圧縮とページの圧縮が行われます。考慮に入れます。フィールドにアクセスするまでに、2の累乗または10の累乗に対して、元の宣言サイズの関係との類似性はなくなりました。また、結合演算子や並べ替え演算子など、クエリ実行スタックの上位にあるさまざまな要素も、2つのサイズの累乗の恩恵を受けません(「証明」リンクはありませんが、私の言葉を信じれば大丈夫です...) 。データをクライアントにマーシャリングするときのTDSプロトコルも同様です。そして、私はクライアントにもほとんどメリットがありません。

于 2009-09-03T17:59:39.337 に答える
10

2の倍数を使用する理由はありません。データの推定サイズに一致するようにフィールドを設定します。

ただし、言及する価値のある数値の1つは255です。一部のデータベースシステムの最大varcharタイプは255ですが、これはまれになっています。私は主に、現在非常に古いバージョンのMySqlについて考えています。そのため、開発者は、移植性を高めるために列サイズを255以下に設定する場合があります。

于 2009-09-03T18:00:45.653 に答える
3

私はそれは問題ではないと投票します。アプリケーションにとって最も意味のあるものを選択してください。人間が読める値を使用します。変数と列に適切な名前を付けてください。本当に極端な場合にのみ、調整する必要があります。調整する必要があることがわかったら、調整します。それまでは、ビジネスまたは人間の観点から最も意味のあるものを選択してください。

于 2009-09-03T18:01:21.207 に答える
2

列のサイズを2の累乗にすることには利点はありません(N)VARCHAR。ドメインモデルに適したものを使用してください。

于 2009-09-03T18:00:05.313 に答える
2

すべてのテーブル列の値は、物理的なページに収まるようにエンジンによって構造化されます。

于 2009-09-03T18:00:21.863 に答える