本日も引き続き、MySQL関連の知識をご紹介させていただきます。今回の記事の主な内容はMySQLのインデックス関連の内容です。 1. MySQLインデックスの紹介インデックスは、データクエリを高速化するために、MySQL データベースによってテーブル内の 1 つまたは複数の列に追加される「ディレクトリ」です。 MySQL のインデックスは特別なファイルですが、InnoDB タイプのエンジン (MySQL エンジンについては今後の記事で説明します) のテーブルのインデックスはテーブル スペースの不可欠な部分です。 2. MySQLの5種類のインデックスの詳しい説明1. 総合索引共通インデックスは、MySQL データベース内の共通のインデックスです。共通インデックスを追加する列のデータには特別な要件はありません。共通インデックスの役割は、差分クエリを高速化することです。 テーブルexp(id int, name varchar(20),index exp_name(name))を作成します。 または、次のようにインデックスをキーに置き換えます。 テーブル exp (id、int、name varahcr (20)、キー exp_name(name)) を作成します。 上記の SQL コマンドでは、key または index はインデックスの追加を意味し、その後にインデックス名が続き、括弧内の列はインデックスを追加する列です。 データ テーブルを作成した後、テーブルに新しい共通インデックス SQL ステートメントを追加する例を次に示します。 テーブル exp を変更し、インデックス exp_id(id) を追加します。 実行結果は次のとおりです。 以下は、データ テーブルを作成した後に共通インデックスを削除する SQL ステートメントの例です。 テーブルを変更してインデックス exp_name を削除します。 実行結果は次のとおりです。 上記のコマンドでは、exp_name はインデックスを含むフィールドの名前ではなく、インデックスの名前であることに注意してください。テーブル内のインデックスの名前を忘れた場合は、次の SQL コマンドを実行してクエリを実行できます。 exp からインデックスを表示します。 このうち、exp はテーブル名であり、コマンド実行結果は以下のようになります。 上の図からわかるように、通常のインデックスを追加した後、desc を使用してテーブル構造を表示すると、Key 列に MUL が表示されます。これは、列に通常のインデックスが追加されたことを意味します。 (II) ユニークインデックスユニーク インデックスは、インデックスが追加された列のすべての値が 1 回だけ出現することを要求する共通インデックスです。通常、一意のインデックスは ID 番号や学生番号などのフィールドに追加されますが、名前などのフィールドに追加することはできません。 テーブル exp (id int、name varchar(20)、一意のキー (name)) を作成します。 上記コマンドの実行結果は以下のとおりです。 desc コマンドを使用して、一意のインデックスが追加されたフィールドのテーブル構造を照会すると、キー列に UNI が表示され、フィールドに一意のインデックスが追加されたことが示されます。 以下は、一意のインデックスを削除する SQL ステートメントの例です。 alter table exp drop index name; 実行結果は次のとおりです。 (III) 主キーインデックス主キー インデックスは、データベース内のすべてのインデックスの中で最もクエリ速度が速く、各データ テーブルには主キー インデックス列を 1 つだけ持つことができます。主キー インデックスの列には重複データや null 値を含めることはできません。 テーブル exp(id int 、name varchar(20)、主キー (id)) を作成します。テーブル exp を変更して主キー (id) を追加します。 列に主キー インデックスを追加すると、次に示すように、desc でテーブル構造を表示するときに、キー列に PRI が表示されます。 主キー インデックスを削除するには、次のコマンドを実行します。 alter table exp 主キーを削除します。 この SQL ステートメントでは、キーをインデックスに置き換えることはできないことに注意してください。 (IV)総合指数異なる列を含むインデックスを作成する場合は、複合インデックスを作成できます。実際、複合インデックスはビジネス シナリオで頻繁に使用されます。たとえば、データ パケットの内容を記録する場合、データ パケットを識別するための基準として IP とポート番号を使用する必要があります。この場合、IP アドレス列とポート番号列の複合インデックスを作成できます。以下は、複合インデックスの作成、追加、および削除を行う SQL ステートメントの例です。 テーブル exp (ip varchar(15),port int,主キー (ip,port)) を作成します。 alter table exp に主キー(ip、port)を追加します。 alter table exp dorp 主キー; 複合インデックスが作成された後、desc を使用してデータ テーブル構造を表示すると、キー列に複数の PRI が表示されます。これは、PRI を含むこれらの列が複合インデックスの列であることを意味します。以下のように表示されます。 複合インデックスは、複数列の主キー インデックスと同等であることに注意してください。したがって、複合インデックスが追加される列には空のデータを含めることはできず、これらの列のデータは完全に同じにすることはできません。そうでない場合、MySQL データベースはエラーを報告します。以下のように表示されます。 (V) 全文索引全文インデックスは主に、大量のデータにおけるあいまい一致の問題を解決するために使用されます。データベース内のフィールドのデータ量が非常に多い場合、like+ワイルドカード方式を使用して検索すると、速度が非常に遅くなります。この場合、フルテキスト インデックスを使用してあいまいクエリを高速化できます。全文索引の原理は、単語分割技術によってテキスト内のキーワードとその出現頻度を分析し、順番に索引を作成することです。フルテキスト インデックスの使用は、データベースのバージョン、データ テーブル エンジン、さらにはフィールド タイプと密接に関連しています。主な制限は次のとおりです。 テーブル exp (id int、コンテンツ テキスト、filltext キー (コンテンツ)) を作成します。エンジン = MyISAM; alter table exp フルテキスト インデックス (コンテンツ) を追加します。 テーブル exp を変更してインデックスの内容を削除します。 実行結果の一部は次のとおりです。 全文インデックスを作成した後は、あいまい検索に like+wildcard メソッドを使用することはできません。全文インデックスの使用には、次に示すように独自の特定の構文があります。 select * from exp where match(content) against ('a'); match の後の括弧内のフィールドには全文インデックスが含まれ、against の後の括弧内のフィールドにはあいまい一致の対象となるコンテンツが含まれます。 3. MySQLインデックスの使用原則1. インデックス作成は、典型的な「スペースと時間を交換する」戦略です。コンピュータのストレージ スペースを消費しますが、クエリの速度は上がります。 要約するこれで、MySQL データベース インデックスの詳細な説明に関するこの記事は終了です。MySQL インデックスに関するより関連性の高いコンテンツについては、123WORDPRESS.COM の以前の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。 以下もご興味があるかもしれません:
|
>>: Vue+Echart 棒グラフで疫病データ統計を実現
データ表示は、常にあらゆる職業の人々が求めているものです。特にフロントエンド開発業界では、データを表...
この記事では、WeChatアプレットの計算機機能を実装するための具体的なコードを参考までに紹介します...
1. Dockerネットワークを作成する docker ネットワーク作成 kong-net 2. デ...
<br />一般的に、「標準的な Web ページ」のファイル構成は XHTML CSS ...
目次1. マップは任意のタイプのキーを受け入れます2. マップにはキー名に関する制限はありません3....
背景あっという間に忙しい一年が終わり、毎年恒例のイベントの時期がやってきます。お祭り気分を演出するに...
この記事の例では、el-tableを使用して列と行を動的にマージするVueの具体的なコードを参考まで...
序文私が必要としているのは、構文の強調表示、関数プロンプト、自動行折り返し、およびコードの折りたたみ...
親ディレクトリを指定する方法../ はソース ファイルの親ディレクトリを表し、../../ はソース...
JavaScript DOM を読み終えた後、解釈型 JavaScript スクリプト言語に対する...
開発に携わっている友人、特に MySQL に関係のある友人は、非常に遅い MySQL クエリに遭遇す...
# 以下の例は x64 ビット ランタイム v3.0.0 用です mkdir /runtimes ...
目次FormDataとは何ですか? vueとaxiosの協力による実践的な体験追加()セット()消去...
key_lenの意味MySQL では、次に示すように、explain を使用して SQL ステートメ...
序文以前、Docker の 2375 Remote API を有効にしていました。会社のセキュリティ...