MySqlにおけるvarchar(10)とvarchar(100)の違いと長所と短所

1219 ワード

背景
MySQLを使用する多くの学生はvarcharというデータ型を使用します.初心者がvarcharを習い始めたばかりの頃は、varcharが長くなるタイプであることを覚えているに違いないので、多くの初心者はテーブルを設計する際にvarchar(X)の長さを非常に長く設定し、後でより長いデータストレージがある場合、より良い互換性を確保することを目的としています.
そこで本来varchar(10)は現在のストレージの長さのニーズを満たすことができ,varchar(100)に変更された.
では疑問が来ました.
長くなるタイプである以上、varchar(10)とvarchar(100)の違いは何ですか?
例を挙げると、'hello12345'という文字列を格納するには、varchar(10)varchar(100)を使用して格納し、ディスク領域を占有するのは同じですか?
答えは、ディスクを占有するストレージ容量は同じです.
ストレージのディスク容量が同じである以上、他に何か違いがありますか?varchar(100)varchar(10)を使用して'hello12345'文字列を格納すると、ディスク領域は同じですが、消費されるメモリは異なり、より長い列で消費されるメモリはより多くなります.MySQLは通常、内部値を保存するために固定サイズのメモリブロックを割り当てます.特に、テンポラリ・テーブルを使用してソートすると、より多くのメモリが消費されます.ディスクを使用してソートする場合も同様です.
したがって、この時点でvarchar(100)はより多くのメモリを消費します.
varchar(10)とvarchar(100)の優劣は何ですか?
ファイルのソートやディスクベースのテンポラリ・テーブルに関連する場合、より長い列ではより多くのメモリが消費されるため、使用時にメモリ領域を無駄にしすぎないか、実際に使用した長さを評価して文字の長さを設定する必要があります.冗長性10%の長さを推奨します(ビジネスによって異なります).
varchar(10)を使用するとメモリ領域が節約されますが、実際のビジネスでは文字長が10を超えるとテーブル構造を変更する必要があり、テーブルデータ量が特に大きい場合は拡張しにくいです.
この場合、varchar(100)はテーブル構造を変更する必要がなく、ビジネスの拡張性が向上します.
参考:『高性能MySQL第3版』第4章
公衆番号へようこそ:javaの旅