インデックス作成に関する知識ポイント

时间把记忆冲淡
リリース: 2020-05-10 16:15:49
オリジナル
158 人が閲覧しました

インデックスとは何ですか?

インデックスは、ストレージ エンジンがレコードを迅速に検索できるようにするデータ構造であり、データのディレクトリとも言えます。インデックスファイルはB-Tree形式で保存されます

インデックスの役割は何ですか?

1. インデックスにより、データの取得とデータのグループ化と並べ替えが高速化されます。
3. インデックスにより、リレーショナル テーブルの接続速度が高速化されます。インデックスのデメリットは何ですか?

1. インデックスの作成と維持には時間がかかり、インデックスのサイズが大きくなるにつれて増加します2. インデックスの作成には、テーブル内のデータが追加、削除、または変更されると、インデックスが消費されます。動的に維持する必要もあります

なぜクエリ速度を改善できるのでしょうか?


主な理由は、逐次検索の効率がB+tree構造検索よりも低いためです(これは詳細に理解する必要があります)

インデックスタイプ?

1. 主キーインデックス

primark key null 値を許可しない特殊な一意のインデックスです。通常、主キーインデックスはテーブル作成時に同時に作成されます。注: テーブルには主キーを 1 つだけ持つことができます。 2. ユニークインデックスユニークインデックス設定のキーワード unique ユニークインデックス列の値は一意である必要がありますが、null 値も許可されます。複合インデックスの場合、列値の組み合わせは一意である必要があります。

3. 通常のインデックス

これは最も基本的なインデックスであり、制限はありません。
4. 複合インデックス
つまり、インデックスには複数の列が含まれており、主にテーブルの逆クエリを回避するために使用されます
5. フルテキスト インデックス

1. -- 1. PRIMARY KEY (主キー インデックス) を追加します

ALTER TABLE ` table_name` ADD PRIMARY KEY (`column`) ;

2. -- 2. UNIQUE (一意のインデックス) を追加します


ALTER TABLE `table_name` ADD UNIQUE (`column`);

3. (通常のインデックス)

ALTER TABLE `テーブル名` ADD INDEX インデックス名 (`列`);

4. -- 4. FULLTEXT (フルテキスト インデックス) を追加します

ALTER TABLE `テーブル名` ADD FULLTEXT (`列`) ;

5. -- 5. 複数列インデックスを追加します

ALTER TABLE `table_name` ADD INDEX Index_name (`column1`, `column2`, `column3`);


インデックスは一度作成すると変更できません。インデックスを変更する場合は、インデックスを削除して再構築することしかできません。 DROP INDEX インデックス名 ON テーブル名を使用してインデックスを削除できます。


重要なポイント

なぜ単一列インデックスに基づく結合インデックスが必要なのでしょうか?

なぜなら、結合インデックスを作成しないと、mysql は最も効率的なインデックスの 1 つだけを使用し、効率は平凡だからです

結合インデックスの一番左の原則は何ですか?

結合インデックス usernname、city、age は、実際には次の 3 つの結合インデックスのセットを確立することと同じです:
1.usernname,city,age; 、都市; 3.ユーザー名
都市と年齢のような複合インデックスがないのはなぜですか?これは、MySQL 複合インデックスの「左端のプレフィックス」の結果です。簡単に理解すると、組み合わせは左端から開始するだけです。これら 3 つの列を含むクエリだけがこの結合インデックスを使用するだけでなく、次の SQL でもこの結合インデックスが使用されます:

SELECT * FROM mytable WHREE username="admin" AND city="Zhengzhou"SELECT * FROM mytable WHREE username="admin"

以下のものは使用されません:

SELECT * FROM mytable WHREE age=20 AND city="鄭州"SELECT * FROM mytable WHREE city="鄭州"

インデックスの作成原則:

  1. 一番左の原則

  2. カーディナリティが小さいテーブルにはインデックスを作成しないのが最善です

  3. 微分性の高い列をインデックスとして選択するようにしてください

  4. 新しいインデックスを作成せず、可能な限りインデックスを拡張してください。

  5. クエリ条件、並べ替え、グループ化、結合操作としてよく使用する必要があるフィールドのインデックスを作成します

  6. インデックスの数を制限し、やみくもにインデックスを作成しないでください

  7. 小さいインデックスを使用するようにしてくださいデータの量を増やし、インデックス付けにプレフィックスを使用します

  8. もう使用されなくなった、またはめったに使用されないインデックスを削除します

インデックスの最適化について:

  1. インデックス列での計算の使用を避ける

  2. 使用を避けるインデックス列では not

  3. インデックス列では is null と is not null の使用を避けてください

  4. インデックスの左端の原則に従ってください

  5. where 句、そうでない場合は、エンジンはインデックスの使用を断念し、テーブル全体のスキャンを実行します

  6. ファジー クエリの前にパーセント記号を付けることはできません。そうでない場合は、テーブル全体のスキャンが行われます

  7. where 句で条件を接続すると、エンジンはインデックスの使用を断念し、テーブル全体のスキャンを実行します。Scan

  8. 列の型が文字列の場合、条件内のデータを引用符で囲む必要があります。そうしないと、インデックスは使用されません。

以上がインデックス作成に関する知識ポイントの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
1
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート