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 エージェントのインストールと設定方法

推薦する

MySQL 8.0.20 winx64 のインストールと設定方法のグラフィックチュートリアル

この記事では、MySQL 8.0.20 winx64 のインストールと設定方法を次のように説明します...

Tik Tok サブスクリプション ボタンのアニメーション効果を実現する CSS

少し前にTik Tokを見ていて、フォローするときのボタンアニメーションがとても美しいと思ったのと、...

jsは古典的なマインスイーパゲームを実装します

この記事の例では、古典的なマインスイーパゲームを実装するためのjsの具体的なコードを参考までに共有し...

MySQLで論理SQLを置き換える際の落とし穴を回避する方法の詳細な説明

重複キーの置換と挿入の違い置換の使用法競合がない場合、挿入と同等となり、他の列のデフォルト値が使用さ...

MySQL データベースの基礎 SQL ウィンドウ関数の例の分析チュートリアル

目次導入導入集計関数 + over()ソート関数 + over() ntile() 関数 + ove...

HTMLページにビデオを挿入する方法の概要

ページでビデオ タグを使用する場合は、Ogg Theora または VP8 (これに問題がない場合)...

VUE ユニアプリの条件付きコーディングとページレイアウトに関する簡単な説明

目次条件付きコンパイルページレイアウト要約する条件付きコンパイル条件付きコンパイルでは、特別なコメン...

Flash が HTML div 要素を覆わないようにする方法

今日、フラッシュ広告のコードを書いていたとき、フラッシュに付属するリンクはポップアップ広告と間違われ...

Windows で Mysql を起動したときに 1067 が表示される場合の解決策

数日前に仕事を始めて、Mysql をインストールしたところ、開くことができました。今日、会社に行った...

バックエンド サーバー プロキシとして Nginx を推奨する理由 (理由分析)

1. はじめに実際のサーバーはパブリックインターネットに直接公開されるべきではありません。そうしな...

Tomcatのデフォルトパスの設定によって発生するプロジェクトURLの競合を解決する方法の詳細な説明

序文Tomcat は優れた Java コンテナですが、避けられない小さな落とし穴もいくつかあります。...

Vue+echart で 2 列チャートを実現

この記事では、vue+echart を使って二重列チャートを実現するための具体的なコードを参考までに...

CSS3でカルーセル画像を作成する方法

スライドショーは Web ページでよく見られます。美しい写真が使われています。こちらは純粋な CSS...

一目でわかる$nextTickの説明

目次1. 機能説明2. 親コンポーネント3. サブコンポーネント NextTick.vue 4なぜ未...

階段を転がす特殊効果を実現する JavaScript (jQuery 実装)

皆さんもJDを使ったことがあると思います。ホームページには非常によく見られる機能があります。階段の特...