-1

私は mysql DB を設計しようとしていますが、オーバーヘッドを最小限に抑えるために何をすべきかわかりません。ユニークなニーズがあります。フィールドの 1 つが 60kb の長さまたは 100 バイトの短さである可能性があります。オーバーヘッドを最小限に抑えるには、このフィールドでどの種類と長さを使用すればよいですか?

最大値を 60k のように定義すると、60k までの行に残っているすべての未使用スペースがスペースで満たされると聞いたことがあります。これにより不要なオーバーヘッドが発生する可能性があることを理解しています。残りの行はそうではありません、あなたは何を提案しますか??

4

3 に答える 3

2

MySQL では、diskVARCHARにコンパクトに保存します。つまり、特定の行で使用される文字列と、その文字列の長さをエンコードするための 1 ~ 2 バイトのみを保存します。これは、データとインデックスの両方に当てはまります。

ただし、VARCHARがストレージ エンジンからメモリにロードされると、全長までパディングされます。を宣言すると、これは不必要に多くのメモリを消費しますVARCHAR(65535)。次に、そのパディングされた表現が、並べ替えまたは一時テーブル操作中にディスク上で終了する可能性があります。

を使用しますTEXT。このデータ型はメモリ内でパディングされずVARCHAR、最大 64KB の文字列もサポートします。

より長い文字列が必要な場合は、MEDIUMTEXT最大 16MB をサポートするものを使用してください。

于 2013-02-13T19:12:10.767 に答える
0

フィールドの 1 つは、60kb の長さまたは 100 バイトの短さである可能性があります。

BLOB/TEXTのように聞こえます。Andreas が指摘したように、64K 以上を必要としないことが確実にわかっている場合は、VARCHAR を使用することもできます。

最大値を 60k のように定義すると、60k までの行に残っている未使用のスペースがすべてスペースで埋められると聞いたことがあります。

CHAR を使用する場合、yes: パディングを格納します。

この長さを利用する行はごくわずかですが、残りの行のほとんどは利用しません。

それは正しくありません。最新の DBMS は可変長の行を格納します。実際に必要なスペースだけが実際に使用されます。BLOB/TEXT または VARCHAR を使用するだけで問題ありません。

于 2013-02-13T19:01:25.683 に答える
0

VARCHARを使用します。

VARCHAR 列の値は可変長文字列です。長さは、MySQL 5.0.3 より前では 0 から 255、5.0.3 以降では 0 から 65,535 の値として指定できます。

于 2013-02-13T12:23:30.763 に答える