1.インデックスとは何ですか?
インデックスは、MySQLがデータを効率的に取得するためのデータ構造であり、クエリの効率を向上させることができます。
次に、なぜインデックスを作成するのですか?
データ構造を順番にすばやく検索します。すばやく見つけて、順番に並べ替えます。
第三に、インデックスの構造
btree構造。
第四に、インデックスの利点と欠点
1.利点
- インデックスにより、検索効率が向上し、IOコストが削減されます。
- インデックス列でデータを並べ替え、並べ替えのコストを削減し、cupの使用量を削減します。
2.短所
- インデックスもテーブルであり、テーブルには主キーとインデックスフィールドがあり、エンティティテーブルのデータを指しているため、インデックスはスペースです
- インデックスを使用すると、インデックスのクエリ速度が大幅に向上しますが、更新の削除、挿入など、テーブルの更新速度が低下します。テーブルを更新するとき、mysqlはデータを保存するだけでなく、インデックスファイルも保存する必要があるためです。
- インデックス作成は効率を改善するための1つの要素にすぎません。MySQLに大量のデータがある場合、最適なインデックスを確立するか、クエリを最適化するために調査する必要があります。
5、インデックスの分類
1.単一値インデックス。インデックスには単一の列のみが含まれ、テーブルには複数の単一列のインデックスを含めることができます。
select * from user where name = '张三'
create index idx_表名 _索引名 on 表名 (表字段) #单值索引
create index idx_user _name on user (name)
2.一意のインデックス。インデックス列の値は一意である必要がありますが、null値は許可されます。
3.複合インデックス。インデックスに複数の列が含まれています
select * from user where name = '张三' and email ='[[email protected]](mailto:[email protected])'
create index idx_表名 _索引名 on 表名 (表字段1,表字段1) #复合索引
create index idx_user _name on user (name,email )
创建:
create [unique(唯一索引)] index indexName on mytable (columname(length))
alter mytable ADD [unique] index[indexname] on (columname(length))
删除:
drop index [indexname] on mytable
查看
show index from mytable
6番目に、インデックス構造l:
- btreeインデックス
- ハッシュインデックス
- フルテキストフルテキストインデックス
- rツリーインデックス
7、インデックスを作成するための条件
1.どのような状況でインデックスを作成するのが適切か
- 主キーには自動的にインデックスが作成されます
- クエリ条件として頻繁に使用されるフィールドにインデックスを作成する
- クエリの他のテーブルに関連するフィールド、外部キーリレーショナルインデックス
- 頻繁に更新されるフィールドは、インデックス作成には適していません。
- 未使用のフィールドがインデックスの作成に適さない場合
- 単一キー/結合インデックスの選択の問題(同時実行性が高い場合、結合インデックスを作成する傾向がある)
- クエリで並べ替えられたフィールド。並べ替えられたフィールドにインデックスでアクセスすると、並べ替えの速度が大幅に向上します。
- クエリの統計またはグループ化フィールド。
2.索引付けに適していないもの
- レコードが少なすぎます
- テーブルへの頻繁な追加、削除、変更-データの保存とインデックスファイルの保存
データが複製され、フィールドが均等に分散され、頻繁にクエリまたはソートされるフィールドにインデックスが付けられます - データ列に重複するコンテンツが多数含まれている場合、インデックスを作成しても実用的な効果はあまりありません。テーブルに100,000データがある場合、TとFだけのフィールドがあり、各値の分布確率は約50%です。このテーブルフィールドにインデックスを追加しても、通常、データベースのクエリ速度は向上しません。