本日も引き続き、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 棒グラフで疫病データ統計を実現
その機能はグローバル スタイルを設定することです。その後の相対パスはこれに基づきます: <im...
MySQL の日付型単一行関数: CURDATE()またはCURRENT_DATE()は現在の日付を...
1. システムにログインし、ディレクトリに入ります: cd /etc/sysconfig/netwo...
1. 問題の再現:各日の合計数を日ごとにカウントします。データのない日がある場合、グループ化によっ...
目次導入ステップ1ステップ2: アイデアで動的Webプロジェクトを作成するステップ3: Tomcat...
この記事の例では、WeChatアプレットで写真をアップロードするための具体的なコードを参考までに共有...
目次目的npm init および package.json ファイルモジュールのインストールと管理モ...
序文パーティション フィールドは主キーの一部でなければならないことは誰もが知っています。では、複合主...
背景MySQL のデッドロックについて言えば、私は以前 MySQL のロックに関する基本的な紹介記事...
目次グローバル変数として可変ホイスト一時的なデッドゾーンブロックスコープ重複したステートメント宣言さ...
展開環境: ここでは docker コンテナ、Linux システム、VmWare 仮想マシンが使用さ...
目次序文クイックレビュー: JavaScript 関数関数とは何ですか?関数を宣言する関数の呼び出し...
折りたたみ表示の複数行テキストコンポーネント複数行のテキスト コンポーネントを折りたたんで表示し、展...
目次gzip 圧縮を使用する理由は何ですか? nginxはgzipを実装するgzip処理nginx ...
目次1. データベースの使用を選択2. 情報を表示する3. テーブルを作成する4. データを挿入する...