インデックスの簡単な紹介は次のとおりです。 インデックスを追加する目的は、データベース クエリのパフォーマンスを向上させることです。インデックスは最もコスト効率の高いものです。メモリを追加したり、プログラムを変更したり、SQL を調整したりする必要はありません。正しいインデックス作成を実行するだけで、クエリ速度が数百倍または数千倍に向上する可能性があります。これは魅力的ですが、無料のランチはありません。クエリ速度の向上は、挿入、更新、および削除の速度を犠牲にして実現されます。また、インデックスのサイズは一般的にデータの 3 分の 1 です。また、インデックスはメモリにロードする必要があります。すべてのフィールドにインデックスを付けるとメモリを犠牲にしてしまうため、適切にインデックスを追加する必要があります。 ここでは、MySQL でよく使用されるインデックスについて簡単に紹介します。 インデックスを追加する前に、テーブルに既に存在するインデックスを確認することをお勧めします: show index from table name; 1. 主キーインデックス 注: テーブルには主キー インデックスを 1 つしか作成できませんが、一意のインデックス、通常のインデックス、フルテキスト インデックスなど、複数のインデックスを追加できます。 主キー インデックス: 通常、テーブルの作成時に追加されます。たとえば、id は通常、主キー インデックスに自動増分を加えたものです。 主キー インデックスの特性: 空および一意にすることはできません。 2. 普通指数 通常のインデックスを作成します: 3. ユニークインデックス 一意のインデックスを作成します: ユニーク インデックスと主キー インデックスの違い: 一意のインデックス: 複数の null を持つことができますが、データの内容は繰り返すことができません。 主キー インデックス: null にすることはできず、コンテンツは一意である必要があります。 2 つの違いは、主キー インデックスは null にできないのに対し、一意のインデックスは複数の null を持つことができることです。残りは同じです。 4. 全文インデックス 全文インデックスはMyISAMでのみ利用可能です(InnoDBもMySQL 5.6以降では全文インデックスをサポートしています)[5.7はMyISAMをサポートしていません] 全文インデックスは、主に記事やタイトルなどのテキスト ファイルを対象としています。 テーブルを作成するときにフルテキスト インデックスを作成します。 テーブル「記事」を作成します( `id` int(10) 符号なし NOT NULL AUTO_INCREMENT, `title` varchar(200) デフォルト NULL, `コンテンツ`テキスト、 主キー (`id`)、 フルテキストキー `title` (`title`,`content`) ) ENGINE=MyISAM (InnoDB は 5.6 以降ではフルテキスト インデックスもサポートしていますが、5.7 では MyISAM エンジンはサポートされていません) DEFAULT CHARSET=utf8; 既存のテーブルにフルテキスト インデックスを作成するには: ALTER TABLE article に FULLTEXT INDEX fulltext_article(title,content); を追加します。 フルテキスト インデックスを作成した後で使用する際に注意すべき点もいくつかあります。 データベース内のあいまいクエリは like キーワードを使用して実行されることはよく知られています。次に例を示します。 SELECT * FROM article WHERE content LIKE '%query string%'; では、フルテキストインデックスも同じように使用するのでしょうか?もちろん違います。フルテキスト インデックスを使用してクエリを実行するには、特別な構文を使用する必要があります。たとえば、article テーブルの title 列と content 列で指定されたクエリ文字列の全文を検索する場合、SQL ステートメントを次のように記述できます。 SELECT * FROM article WHERE MATCH(title,content) AGAINST ('クエリ文字列'); 強く注意してください: MySQL の組み込みフルテキスト インデックスは英語のテキストに対してのみフルテキスト検索を実行でき、現在のところ中国語のテキストに対してフルテキスト検索を実行できません。中国語を含むテキスト データの全文検索を実行する必要がある場合は、中国語を処理するために Sphinx/Coreseek テクノロジを使用する必要があります。 注意: 現在、MySQL が提供するフルテキスト インデックスを使用する場合、クエリ文字列が短すぎると、期待どおりの検索結果が得られません。 MySql フルテキスト インデックスで見つかる単語のデフォルトの最小長は 4 文字です。さらに、クエリ文字列にストップワードが含まれている場合、ストップワードは無視されます。 可能であれば、テーブルの作成時にフルテキスト インデックスを直接作成するのではなく、フルテキスト インデックスを作成する前にテーブルを作成してすべてのデータを挿入するようにしてください。前者の方が後者よりも効率的です。 インデックスを削除する SQL ステートメント: 上記の簡単な紹介の後、どのフィールドをインデックス化する必要がありますか? 1. 頻繁にクエリされるフィールドにインデックスを作成する必要があります。 2. 頻繁に更新されるフィールドにはインデックスを作成しないでください。 3. 性別フィールドなど、一意性が低いフィールドはインデックス化しないでください。 4. where 条件の後に表示されないフィールドにはインデックスを付けないでください。 次の条件が満たされる場合は、インデックスを作成する必要があります。 1. where 条件の後に頻繁に表示される、頻繁にクエリされるフィールドには、インデックスを作成する必要があります。 2. 頻繁に更新されないフィールドには、インデックスを作成できます。 インデックスの使用に関する注意事項 1. 作成された複数列インデックスの場合、クエリ条件が左端の列を使用している限り、通常、インデックスが使用されます。
2. LIKE を使用するクエリでは、クエリが '%a' の場合、インデックスは使用されませんが、like 'a%' の場合はインデックスが使用されます。先頭に%や_などの変数値を使用することはできません 3. 条件に or がある場合、条件にインデックスがあっても使用されません。 4. 列の型が文字列の場合は、条件内のデータを必ず引用符で囲んでください。
要約する 以上がこの記事の全内容です。この記事の内容が皆様の勉強や仕事に何らかの参考学習価値をもたらすことを願います。123WORDPRESS.COM をご愛顧いただき、誠にありがとうございます。これについてもっと知りたい場合は、次のリンクをご覧ください。 以下もご興味があるかもしれません:
|
<<: Vue3.xはコンポーネント通信にmitt.jsを使用します
目次1 設定ディレクトリとデータディレクトリを作成する3 イメージからホストに構成ファイルをコピーす...
背景同僚がセキュリティ プロジェクトに取り組んでおり、AWS サーバーに秘密兵器を展開する必要があり...
目次MySQL の 4 つの分離レベルデータ テーブルを作成します。分離レベルの設定物事の分離レベル...
目次ミキシンMixin ノート (重複名)ローカルミックスイングローバル ミックスイン定義とグローバ...
方法1: SET PASSWORDコマンドを使用する MySQL -u ルート mysql> ...
今日、Dockerfile を使用してイメージを作成したときに問題が発生し、イメージの実行後にコンテ...
まず、GIF 操作を見てみましょう。ケース1: スペースがフィルタリングされるスペースの代わりに角括...
スタイルシートの最も重要な機能の 1 つは、ページ、画面、電子シンセサイザーなどの複数のメディアに適...
目次ソリューション分析スライス履歴書のダウンロード具体的な解決プロセス論理的分析フロントエンドサーバ...
プロジェクトのテスト環境データベースのデータが失われてしまったので、記録しておきたいと思います。当時...
目次1. はじめに2. 切り替え1. 開発および本番環境の設定ファイルを追加する2. 複数の環境をサ...
1. 基礎知識: HTTP ヘッダー ユーザーエージェントユーザー エージェントは、ユーザー エージ...
序文この記事は Meituan の大物によって書かれました。とても素晴らしいので、皆さんと共有したい...
情報を探すインターネットで見つかったいくつかの方法: autocomplete="off&...
1. インデックスの原則インデックスは、列内の特定の値を持つ行をすばやく見つけるために使用されます。...