MySQL インデックスの種類 (通常、ユニーク、フルテキスト) の説明

MySQL インデックスの種類 (通常、ユニーク、フルテキスト) の説明

MySQL のインデックスの種類には、通常のインデックス、一意のインデックス、全文インデックスがあります。インデックスを適切に使用すると、データベースのクエリ効率が大幅に向上します。以下では、3 種類のインデックスについて紹介します。

通常:これは最も基本的なインデックスです。制限はありません。MyIASM のデフォルトの BTREE タイプのインデックスは、ほとんどの場合に使用されるインデックスです。

unique:フィールド情報が繰り返されないことが保証されている場合、重複を許可しない一意のインデックスを示します。例えば、ID番号をインデックスとして使用する場合、ID番号を一意に設定できます。

全文: MyISAM テーブルでのみ使用可能な全文検索用のインデックスを示します。 FULLTEXT は、非常に長いテキストを検索する場合に最適です。短いテキストに使用されます。大容量のデータ テーブルの場合、フルテキスト インデックスの生成は非常に時間がかかり、ディスク領域を大量に消費することに注意してください。

MySQL のインデックス タイプ Normal、Unique、Full Text の違い

普通:

ほとんどの場合に使用できる通常のインデックスを示します

個性的:

制約は、データベース テーブル内の各レコードを一意に識別します。つまり、1 つのテーブル内の各レコードは一意にすることはできません (たとえば、ID カードは一意です)。一意 (列の一意性が必要) 制約と主キー (主キー = 一意 + NULL でない列の一意性) 制約は、どちらも列または列セットの一意性を保証します。主キーには自動的に定義された一意制約がありますが、各テーブルには複数の一意制約を設定できますが、主キー制約は 1 つしか設定できません。

MySQL でユニーク制約を作成する

全文:

全文検索を示します。長いテキストを検索する場合に最適です。短いテキストの場合は、インデックスを使用することをお勧めします。ただし、大量のデータを検索する場合は、最初にテーブルの全文インデックスを作成してからデータを書き込むよりも、グローバル インデックスなしでテーブルにデータを入れてから、インデックスの作成を使用して全文インデックスを作成する方がはるかに高速です。

要約すると、インデックスの種類は、インデックス付けされたフィールドのコンテンツ特性によって決まり、通常は「通常」が最も一般的です。

実際の操作では、テーブル内のどのフィールドをインデックスとして選択する必要がありますか?

インデックスをより効率的に使用するには、インデックスを作成するときに、どのフィールドに対してインデックスを作成するか、またどのような種類のインデックスを作成するかを考慮する必要があります。主な原則は 7 つあります。

1.一意のインデックスを選択

一意のインデックスの値は一意であり、このインデックスを使用してレコードをより迅速に識別できます。たとえば、学生テーブルの学生 ID は一意のフィールドです。このフィールドに一意のインデックスを作成すると、学生の情報をすぐに特定できます。フルネームを使用すると、名前が重複する可能性があり、検索が遅くなります。

2.並べ替え、グループ化、結合操作を頻繁に必要とするフィールドにインデックスを作成します。

ORDER BY、GROUP BY、DISTINCT、UNION などの操作を頻繁に必要とするフィールドでは、並べ替え操作に多くの時間がかかります。インデックスを作成すると、ソート操作を効果的に回避できます。

3.クエリ条件としてよく使用されるフィールドにインデックスを作成します

フィールドがクエリ条件として頻繁に使用される場合、このフィールドのクエリ速度はテーブル全体のクエリ速度に影響します。したがって、このようなフィールドにインデックスを作成すると、テーブル全体のクエリ速度が向上します。

4.インデックスの数を制限する

インデックスが多ければ多いほど良いです。各インデックスにはディスク領域が必要です。インデックスの数が増えるほど、必要なディスク領域も増えます。テーブルを変更する場合、インデックスの再構築と更新は面倒です。インデックスの数が増えるほど、テーブルの更新にかかる時間が長くなります。

5.データの少ないインデックスを使用するようにしてください

インデックス値が非常に長い場合、クエリ速度に影響します。たとえば、CHAR(100) 型フィールドの全文検索は、CHAR(10) 型フィールドの全文検索よりも確実に時間がかかります。

6.プレフィックスインデックスの使用を試みる

インデックス フィールドの値が非常に長い場合は、値のプレフィックスを使用してインデックスを付けることをお勧めします。たとえば、TEXT および BLOG タイプのフィールドの場合、全文検索は時間の無駄になります。フィールドの最初の数文字のみを検索すると、検索速度が向上します。

7.使用されなくなった、またはほとんど使用されないインデックスを削除します。

テーブル内のデータが大量に更新されたり、データの使用方法が変更されたりすると、元のインデックスの一部が不要になる場合があります。データベース管理者は、これらのインデックスを定期的に識別して削除し、更新操作に対するインデックスの影響を軽減する必要があります。

注: インデックスを選択する最終的な目的は、クエリを高速化することです。上記の原則は最も基本的なガイドラインですが、これに固執することはできません。読者は今後の学習や仕事でも実践を続けるべきです。アプリケーションの実際の状況に基づいて分析および判断し、最も適切なインデックス方法を選択します。

たとえば、ショッピングモールの会員カード システムを開発しているとします。このシステムにはメンバー テーブルがあります (一般的なフィールドは次のとおりです)。

会員番号 INT
メンバー名 VARCHAR(10)
会員ID番号 VARCHAR(18)
会員電話番号 VARCHAR(10)
メンバーの住所 VARCHAR(50)
メンバーの発言テキスト

次に、この会員番号をPRIMARYを使用して主キーとして使用します。

メンバー名のインデックスを作成する場合は、通常のINDEXを使用します。

会員ID番号のインデックスを作成する場合は、UNIQUE(一意、重複不可)を選択できます。

メンバーメモ情報のインデックスを作成する必要がある場合は、全文検索に FULLTEXT を選択できます。

要約する

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

以下もご興味があるかもしれません:
  • MySQL インデックスタイプの概要と使用上のヒントと注意事項
  • PHP+MySQL ツリー構造(無制限分類)データベース設計 2 つの例
  • MySQL で 2 つのデータベース テーブル構造を比較する方法
  • さまざまな種類のMySQLインデックス
  • MySQL の暗黙的な型変換によって発生するインデックス障害の解決策
  • MySQL ツリー構造データベース テーブル設計
  • PythonでMySQLデータベース構造ドキュメントを生成する
  • MySQL データベースの構造とインデックスの種類

<<:  Win10 + Ubuntu 16.04 デュアルシステム 完璧なインストールチュートリアル [詳細]

>>:  React Hooksを使用する際のよくある落とし穴

推薦する

Tencent Cloud Serverをゼロから導入する方法

初めての投稿ですので、間違いや問題点などありましたら、コメント欄で指摘していただければ、今後改善させ...

HTML タグのメタ概要、HTML5 のヘッド メタ属性の概要

序文metaはhtml言語のhead領域にある補助タグです。おそらく、これらのコードは不要だと思うで...

Docker コンテナにおける Patroni の簡単な分析

目次イメージの作成ファイル構造Dockerファイルエントリポイント関数ファイルを生成するイメージを構...

MySQLで重複データを削除する詳細な例

MySQLで重複データを削除する詳細な例重複レコードには 2 つの意味があります。1 つは完全に重複...

ネイティブJSで様々なモーションの複合モーションを実現

この記事では、ネイティブ JS で実装された複合モーションを紹介します。複合モーションとは、異なる属...

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

MySQL 5.5 のインストールと構成のチュートリアル ノートを整理し、全員と共有します。 1.公...

docker によってプルされたイメージがどこに保存されるかの詳細な説明

docker によってプルされたコマンドは、デフォルトでは /var/lib/docker/ フォル...

HTML 名、ID、クラス (フォーマット/アプリケーション シナリオ/機能) などの違いの紹介。

ページには多くのコントロール (要素またはタグ) があります。これらのタグをより便利に操作するには、...

Centos7 ベースの Nginx Web サイト サーバーの構築の詳細説明 (仮想 Web ホストの構成を含む)

1. Nginx サービス基盤Nginx (エンジン x) は、パフォーマンスの最適化のために特別...

MySQL 8.0.17 をインストールしてリモート アクセスを構成する方法

1. インストール前の準備データベースのバージョンを確認するコマンド: mysql --versio...

タグのターゲットリンクを iframe に向ける方法

コードをコピーコードは次のとおりです。 <iframe id="myFrameId&...

チェックボックスの選択またはキャンセルを実装するJavaScript

この記事では、すべてのチェックボックスを選択または解除するためのJavaScriptの具体的なコード...

Tomcatの起動が遅い問題を素早く解決、超簡単

今日、私はクラスメートが問題を解決するのを手伝いました - Tomcat の起動が非常に遅く、約 5...

docker cp ファイルをコピーしてコンテナに入る

実行中のコンテナに入る # コンテナに入り、新しいターミナルを開きます# docker exec -...

Docker イメージ + nginx を使用して Vue プロジェクトをデプロイする方法

1. Vueプロジェクトのパッケージ化開発されたvueプロジェクトに次の名前を入力し、パッケージ化し...