MySQLでTEXT/BLOB型を使用する際の注意点を詳しく説明します

MySQLでTEXT/BLOB型を使用する際の注意点を詳しく説明します

1. TEXTとBLOBの違い

TEXT ファミリと BLOB ファミリの唯一の違いは、BLOB 型は照合や文字セットなしでバイナリ データを格納するのに対し、TEXT 型は文字セットまたは照合を持つ点です。簡単に言えば、中国語を保存する場合はTEXTを選択します。

2. デフォルト値の問題

厳密モードではデフォルト値を設定することはできません。設定すると、「デフォルト値を持つことはできません」というエラー メッセージが表示されます。

mysql> テーブル `test`.`text_blob`( を作成します。 
 -> `a_text` テキスト デフォルト ' ' , 
 -> `b_blob` ブロブ 
 -> );
エラー 1101 (42000): BLOB/TEXT 列 'a_text' にはデフォルト値を設定できません

理由: https://www.jb51.net/article/181667.htm

select @@sql_mode; //表示モード

trict モードでは次の制限が適用されます。

1) NULLでないフィールドにNULL値を挿入することはサポートされていません

2) 自動増分フィールドに「値」を挿入することはできませんが、null値を挿入することはできます。

3). テキストフィールドのデフォルト値をサポートしていません

3. ソート

MySQL は、TEXT 列と BLOB 列を他の型とは異なる方法でソートします。つまり、文字列全体ではなく、各列の最初の max_sort_length バイトのみがソートされます。
デフォルト値は 1024 ですが、構成ファイルを通じて変更できます。

mysql> 'max_sort_length' のような変数を表示します。
+-----------------+-------+
| 変数名 | 値 |
+-----------------+-------+
| 最大ソート長 | 1024 |
+-----------------+-------+
セット内の 1 行 (0.00 秒)

4. プレフィックスインデックスを作成する

通常は、先頭の文字をインデックスとして設定するのが最適です。これにより、インデックス スペースが大幅に節約され、インデックスの効率が向上します。

テーブルtable1を変更し、キー(text1(1024))を追加します。

知識ポイントの拡張:

MySQLフィールド設計仕様ではTEXT/BLOBデータ型の使用を避ける

1. 説明

休暇中に時間があれば、いくつかのテーブルの設計を見てみれば、多くの問題が見つかるでしょう。古いシステムには 100 を超えるフィールドがあり、その中には中程度のテキストが多く、データ量は 500 万未満です。開発仕様では、テーブル設計は 500 万のデータ量を超えてはならないと規定されています。テーブルが占めるディスク容量を確認したところ、120G でした。これは間違いなく大きなテーブルであり、最初に設計されたときには設計でこの点は考慮されていませんでした。一言で言えば、オンラインで機能する限り、誰が気にするでしょうか?

MySQL 仕様

1. 1 つのテーブルには 500 万件を超えるレコードを含めないでください。同時に、1 つのテーブルが占有するディスク領域は 50G を超えてはなりません。それ以外の場合は、最適化とテーブルのパーティション分割を検討してください。

2. テキスト フィールド タイプを無効にします。これを使用する必要がある場合は、別のテーブルも設計する必要があります。

3. テキストフィールドタイプを無効にする理由

1. パフォーマンスが非常に悪い。ソートなどの操作を実行する場合、メモリ内の一時テーブルは使用できず、ディスク上の一時テーブルを使用する必要があります。

2. TEXT または BLOB 型ではプレフィックス インデックスのみを使用でき、MySQL ではインデックス フィールドの長さに制限があります。

4. 解決策

標準を設定し、それを厳格に施行します (実装は困難です)。1 人または 2 人の DBA が、数十または数百のビジネス システム、数万のテーブル、数百万のフィールドを手動で確認することは不可能です。最終的には、インテリジェントな監査システムに依存します。

MySQL で TEXT/BLOB 型を使用する際の注意点について詳細に解説したこの記事はこれで終了です。MySQL で TEXT/BLOB 型を使用する際のより詳しい情報については、123WORDPRESS.COM の過去の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • MySQL の TEXT フィールドと BLOB フィールドの違い
  • MySQL の BLOB およびテキスト データ型の詳細な説明

<<:  WeChatアプレット開発によりホームページポップアップボックスアクティビティガイダンス機能が実現

>>:  Linux プラットフォームでの Zabbix エージェントのインストールと設定方法

推薦する

HTML面接の質問の要約

1. doctypeの役割、厳密モードと混合モードの違い、そしてその重要性1. 構文形式: <...

Vue ディレクティブ v-html と v-text

目次1. v-text テキストレンダリング命令2. v-html 1. v-text テキストレン...

Linux で g++ を使用してプログラムをコンパイルする際の -I (大文字の i)、-L (大文字の l)、-l (小文字の l) の機能の詳細な説明

初心者の Linux ユーザーとして、私は単純なgcc/g++操作を何度も使用してきましたが、少し複...

Docker イメージのデフォルトの保存場所を変更する方法 (ソリューション)

システムの初期のパーティション分割により、オペレーティング システム内の対応する / パーティション...

CSS で平均レイアウトを実現するためにネガティブ マージン テクノロジーを使用する方法

通常、IE ブラウザでの CSS の互換性の問題を解決するために、フロート レイアウトが使用されます...

CentOS 7.x のマスターおよびスレーブ DNS サーバーの展開

1. 準備例: 2 台のマシン: 192.168.219.146 (マスター)、192.168.21...

VueでJSXを使用する方法

JSXとは何かJSX は Javascript の構文拡張であり、JSX = Javascript ...

vite2.x は ant-design-vue@next コンポーネントのオンデマンド読み込みを実装します。

1. 使用バージョンバイト:2.0 ant-design-vue: 2.0.0-rc.8ヴュー:3...

Windows Server 2019 のセットアップ方法 (画像とテキスト付き)

1. Windows Server 2019 のインストールVmware に Windows Se...

Nginx gzip設定について

nginx がリソース圧縮を実現する原理は、ngx_http_gzip_module モジュールを介...

MySQLグループクエリ最適化方法

MySQL はほとんどの場合、GROUP BY クエリと DISTINCT クエリを同様に処理します...

Linux でのプロセスデーモン スーパーバイザーのインストール、構成、および使用

Supervisor は非常に優れたデーモン管理ツールです。自動起動、ログ出力、自動ログカットなど、...

Navicat for SQLite で中国語データを CSV にインポートする方法

この記事では、参考までに、csv中国語データをNavicat for SQLiteにインポートする具...

入力テキスト ボックスと画像検証コードの位置合わせの問題 (画像は常に入力より 1 つ上になります)

Web ページ制作では、input と img が同じ行に配置されることが多く、img タグが常に ...