MySQL の char、varchar、text フィールド タイプの違い

MySQL の char、varchar、text フィールド タイプの違い

MySQL では、char、varchar、text の各タイプのフィールドはすべて文字タイプのデータの格納に使用できます。char と varchar はどちらも最大文字長を指定できますが、text では指定できません。

データの保存方法や取得方法も異なります。

データ取得効率は次のようになります: char > varchar > text

具体的な指示:

char:固定長データを格納するのに非常に便利です。CHAR フィールドのインデックスは非常に効率的です。長さは括弧で定義する必要があり、デフォルト値を持つことができます。たとえば、char(10) を定義すると、格納するデータが 10 バイトに達するかどうかに関係なく、10 バイトのスペース (自動的にスペースで埋められます) が占有され、検索時に末尾のスペースは非表示になります。したがって、取得したデータ内のスペースをフィルター処理するには、trim などの関数を使用することを忘れないでください。

varchar:可変長データを格納しますが、ストレージ効率は CHAR ほど高くありません。長さは括弧で定義する必要があり、デフォルト値を持つことができます。データを保存するときに、スペースの自動補完は実行されず、データ内にスペースがある場合、値の保存および取得時に末尾のスペースは保持されます。さらに、varchar 型の実際の長さは、その値の実際の長さ + 1 です。このバイトは、実際に使用された長さを保存するために使用されます。

text:最大長 2^31-1 文字の可変長の非 Unicode データを格納します。テキスト列にはデフォルト値を設定できません。保存または取得時に大文字と小文字の変換は行われません。後で長さを指定してもエラーは報告されませんが、この長さは影響しません。つまり、データを挿入するときに、指定した長さを超えていても正常に挿入できます。

ストレージスペースについて:

UTF8 文字セットを使用する場合、MySQL マニュアルでは次のように説明されています。

  • 基本的なラテン文字、数字、句読点は 1 バイトを使用します。
  • ヨーロッパと中東のほとんどの文字は、2 バイトのシーケンスに適合します。拡張ラテン アルファベット (分音記号、長音記号、重アクセント、ウムラウト、その他の分音記号を含む)、キリル文字、ギリシャ語、アルメニア語、ヘブライ語、アラビア語、シリア語など。
  • 韓国語、中国語、日本語の表意文字は 3 バイトのシーケンスを使用します。

結論は:

1. 頻繁に変更されるフィールドには varchar を使用します。

2. 固定長がわかっている場合は、char を使用します。

3. 255 バイトを超えるデータの場合、varchar または text のみ使用できます。

4. varchar が使用できる場所ではテキストを使用しないでください。

5. 数値フィールドを使用できる場合は、文字列型ではなく数値型を使用するようにしてください。これにより、クエリと接続のパフォーマンスが低下し、ストレージのオーバーヘッドが増加します。これは、クエリと接続を処理するときにエンジンが文字列内の各文字を 1 つずつ比較し、数値型の場合は 1 回の比較だけで十分であるためです。

6. 同じテーブルに複数の大きなフィールドがある場合は、可能であればそれらをマージしてみてください。マージできない場合は、テーブルを分割することを検討してください。理由については、「InnoDB テーブル内の BLOB 列と TEXT 列のストレージ効率の最適化」を参照してください。

要約する

以上がこの記事の全内容です。この記事の内容が皆様の勉強や仕事に何らかの参考学習価値をもたらすことを願います。123WORDPRESS.COM をご愛顧いただき、誠にありがとうございます。これについてもっと知りたい場合は、次のリンクをご覧ください。

以下もご興味があるかもしれません:
  • 面接官がmysqlのcharとvarcharの違いを尋ねたとき
  • MYSQL における char と varchar の違い
  • MySQL における VARCHAR と CHAR 形式のデータの違い
  • MySQL データベースにおける char と varchar の違いの分析と使用上の提案
  • MySQL の char と varchar の違いの分析
  • MySQL における varchar 型と char 型の違い

<<:  Centos8で静的IPを設定する方法の詳細な説明

>>:  携帯電話番号の歩数記録を取得するWeChatアプレット

推薦する

Vue プロジェクトで垂直テーブルを 2 つの方法で実装するアイデアの分析

問題の説明私たちのプロジェクトでは、水平方向のテーブルが一般的ですが、必要に応じて垂直方向のテーブル...

Dockerはmacvlanをベースにホスト間コンテナ通信を実装する

2 台のテスト マシンを見つけます。 [root@docker1 centos_zabbix]# d...

Vue+ElementUI で超大規模なフォーム例を処理する方法

最近、社内の業務調整により、以前の超長文のロジックが大幅に変更されたため、リファクタリングする予定で...

W3C 検証に合格するにはどうすればいいですか?

W3C では、さまざまなタグの規定を設定するだけでなく、Web ページの作成者が実際に W3C 規...

MySQL ルートパスワードを変更する 4 つの方法 (要約)

方法1: SET PASSWORDコマンドを使用するまずMySQLにログインします。フォーマット: ...

jQueryはネストされたタブ機能を実装します

この記事では、ネストされたタブ機能を実装するためのjQueryの具体的なコードを参考までに紹介します...

HTMLタグのデフォルトスタイルの配置

html、address、blockquote、body、dd、div、dl、dt、fieldset...

MySQLオンラインデータベースのデータをクリーンアップする方法

目次01 シナリオ分析02 操作方法03 結果分析01 シナリオ分析今日の午後、開発仲間がオンライン...

Windows 10 でカスタムドメイン名をバインドするように Hexo と GitHub を構成する方法

Hexo は Windows 10 でカスタムドメイン名を GitHub にバインドしますまずドメイ...

docker で php+nginx+swoole+mysql+redis 環境を構築する方法

オペレーティングシステム: Alibaba Cloud ESC インスタンス centos7.4ソフ...

画像ブラインド表示の効果を実現するための純粋な CSS の例

まず、完成した効果をお見せしましょう 主なアイデア: 実際、このブラインドは一種の手品を使用していま...

ゲーム開発におけるサウンド処理にCocosCreatorを使用する方法

目次1. Cocos Creatorでのオーディオ再生の基本1. 基本2. 一般的な方法2. Coc...

vue+element で動的スキニングを実装するためのサンプルコード

プロジェクトのテーマがすべての人の美的感覚を満足できないこともあります。このとき、スキン変更機能は非...

Linux のロード vmlinux デバッグ

gdb を使用してカーネル シンボルをロードする arm-eabi-gdb 出力/ターゲット/製品/...

VUE+SpringBootはページング機能を実装します

この記事では主に、Vue + SpringBoot でページ分割されたリストデータを実装する方法を紹...