sql >> データベース >  >> RDS >> Mysql

SQLテーブルの列で大小の関連データを分離する方が効率的ですか?

    VARCHAR テーブルとインラインで保存されます。 VARCHAR サイズが妥当な場合はより高速になりますが、そのトレードオフはデータとハードウェアによって異なります。実際のシナリオをデータでベンチマークする必要があります。

    VARCHARに保存できる有効な最大バイト数 またはVARBINARY 列には、65,535バイトの最大行サイズが適用されます 、これはすべての列で共有されます。

    たとえば、 VARCHAR(255) columnは、最大255文字の文字列を保持できます。列がlatin1文字セット(文字ごとに1バイト)を使用すると仮定すると、実際に必要なストレージは、文字列の長さ(L)に、文字列の長さを記録するための1バイトを加えたものです。文字列'abcd'の場合 、 L 4です ストレージ要件は5バイトです。同じ列が代わりにucs2を使用するように宣言されている場合 2バイト文字セットの場合、ストレージ要件は10バイトです。「abcd」の長さは8バイトで、最大長が255(510バイト> )。

    より大きなデータの場合は、 TEXTの使用を検討してください またはBLOB TEXT およびBLOB NDBでは列の実装が異なります ストレージエンジン。TEXTの各行 カラムは2つの別々の部分で構成されています。これらの1つは、固定サイズの(256バイト)です。 、および実際には元のテーブルに格納されます。もう1つは、256バイトを超えるデータで構成されます 、非表示のテーブルに保存されます。この2番目のテーブルの行は、常に2,000バイトです。 長いです。これは、 TEXTのサイズを意味します 列は256です size <=256の場合 (ここで、sizeは行のサイズを表します);それ以外の場合、サイズは 256 + size +(2000 –(size – 256)%2000)

    http://dev.mysql.com/doc/refman /5.6/en/storage-requirements.html

    クエリでそのフィールドをめったに使用しない場合は、データベースの関係によって異なります。たとえば、追加情報について。分離されたテーブルを作成することは良いオプションです(正規化)。

    注: VARCHAR CHARとは異なります 。 VARCHAR(250)を作成する場合 20だけを挿入します その上に文字があれば、5バイトかかります + L CHAR(250)とは異なります 、250バイトかかります + L 同じ条件で。



    1. 月曜日から日曜日までのmysql週

    2. 不完全なリカバリ後にデータベースが一貫していることを確認する方法

    3. SQLを使用してMySQLデータベースでテキストを検索および置換する方法

    4. sql cross join-誰かがそれをどのように使用しているのか?