CHAR、VARCHAR、およびテキストデザインの[復刻版] MySQLの
出典:https://www.cnblogs.com/billyxp/p/3548540.html
まずは、常識の人気を見てみましょう:
1、nは括弧内の文字CHAR(n)とVARCHAR(n)の数を表し、バイト数を表すものではありませんので、中国時間(UTF8)を使用しているときは、あなたがn中国を挿入することができますが、実際になることを意味しますM * 3つのバイトが占領しました。
2は、一方でCHARとの最大の違いは、char型のvarchar型に関係なく、実際の値の空白n文字を占めており、唯一の1つの、実際の文字が占有しなければならないスペースのvarchar型を取るだろうということで、実際のスペース+1 <= N。
図3に示すように、n個のchar型とvarcharより提供、文字列が切り捨てられます。
図4は、文字の上限は255バイト、65535バイトVARCHARの上限、テキスト上限は65,535、およびVARCHAR同じです。
5、チャー場合スペース、VARCHAR、およびテキスト末尾格納されトランケートはないであろう。
6、VARCHAR 1-3バイトの長さを格納するために使用され、テキストがありません。
次の図は、結果を確認するには非常に明白になります
値 CHAR(4) 要求ストレージ VARCHAR(4) 要求ストレージ 「」 「」 4つのバイト 「」 1つのバイト 「ダウン」 「ダウン」 4つのバイト 「ダウン」 3つのバイト 'あいうえお' 'あいうえお' 4つのバイト 'あいうえお' 5つのバイト 'ABCDEFGH' 'あいうえお' 4つのバイト 'あいうえお' 5つのバイト 全体:
1、チャー、固定長のメモリ、高速、スペースの無駄がある空間、255の上限を後続処理することができます。
2、VARCHAR、堆積物が存在しない長い、遅い、廃棄物空間となり、末尾のスペース、65535、65532の上限が、最大利用可能なメモリの実際の長さを処理しません。
図3に示すように、テキストは、増加したデータ記憶装置となり、ゆっくりと、無駄なスペースが存在しない場合、スペース、65535の上限を後続の処理は、データの長さが、追加のスペースで格納される全ての区65535を使用することができます。
次に、我々は問題のシーンについて話します:
場合はVARCHAR(n)は、nは非常に大きいのバック我々はvarchar型を使用してもいいですか、テキストがいいのですか?とき これは量的質的な変化に起因する重大な問題です。我々は2つの側面、第一空間から考えると第二は、パフォーマンスです。
まず、宇宙から:
公式文書から、我々は、自動的にテキストに変換されている特定の値よりも大きいvarchar型は、おそらくルールである場合には、以下のようにすることを見ることができます。
- (255)varchar型より大きくはTINYTEXTなり、
- varchar型よりも大きい(500)は、テキストとなり
- (20000)varchar型より大きくはMEDIUMTEXTなり
だから、過度の使用をVARCHARおよびテキストの内容はあまり違いはありません。
第二に、パフォーマンスの面で:
インデックスは、パフォーマンスに影響を与える最も重要な要因となり、そしてテキストのために、インデックスのプレフィックスとプレフィックスを追加する唯一のインデックスは1000バイトの最大に達することができます。
一見varhcarはありません、実際には、すべてのインデックスを追加しますが、テスト後にすることができます。変換は内部になりますので、長い自動的に遮断した場合に限り、varchar型の事実は唯一、インデックスの1000バイトを追加することができます。