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アプレット

推薦する

Linux で MySQL をインストールする簡単な方法

Linux に MySQL をインストールする方法をオンラインで検索すると、多くの方法が表示されまし...

Linuxでファイルの作成時間を表示する方法

1. はじめにLinux でファイルの作成時刻が見つかるかどうかは、ファイル システムの種類によって...

favicon.ico についていくつか注意点があります (ルートディレクトリに置くのがベストです)

任意のウェブページを開きます。例: http://www.baidu.com/ ブラウザのタブのヘッ...

Linux ps および pstree コマンドの知識ポイントのまとめ

Linux の ps コマンドは Process Status の略です。 ps コマンドは、システ...

altとtitleの違いの詳しい説明

これら 2 つの属性はよく使用されますが、その違いはまとめられていません。それでは、その使い方をまと...

Vue のルータールーティングの 2 つのモード (ハッシュと履歴) の詳細な説明

ハッシュモード(デフォルト)動作原理:ウェブページのハッシュ値の変化を監視する—> onhas...

React仮想リストの実装

目次1. 背景2. バーチャルリストとは何か3. 関連概念の紹介4. 仮想リストの実装4.1 ドライ...

WeChatミニプログラムはどのようにしてユーザー情報とユーザーの電話番号を同時に取得するのか

今日ログインページを書いていたとき、個人情報と携帯電話番号を認証する必要がありましたが、ページにボタ...

一般的な Linux ディストリビューションのミラーソース構成の概要

最近 Linux を研究していて、いくつかの Linux ディストリビューションを試してみましたが、...

WeChatアプレットが弾丸画面を送信するビデオプレーヤーを実装

この記事では、WeChatアプレットでビデオプレーヤーの集中砲火を実装するための具体的なコードを参考...

Docker に Tomcat をインストールし、Springboot プロジェクトの WAR パッケージをデプロイする方法

簡単です。チュートリアルを見てください。ブロガー1. まずdockerを起動するサービスdocker...

Ubuntu で起動時に自動的に起動するシェル スクリプトを作成する (推奨)

スクリプトを書く目的は、さまざまなサービスを手動で起動しなくて済むようにすることです(怠惰のためでも...

Linux でファイルプレフィックスを一括で追加する方法

フォルダー内のすべての txt ファイルのファイル名の前に「gt_」を追加する必要があります。つまり...

IE7 互換モードで IE8 を有効にするコード

最も人気のあるタグはIE8ですブラウザベンダーはバージョンアップデートのリリースに躍起になっている一...

Win10 64ビットMySQL8.0のダウンロードとインストールのチュートリアル図

公式サイトから MySQL をダウンロードしてインストールし、クライアントにログインするにはどうすれ...