1.インデックスとは何ですか?
インデックス:すぐにエンジンを格納するためのデータ構造は、デフォルトで見つかったレコード B-Treeインデックスを。インデックスは、ストレージエンジン層の実装です。
インデックスの目的は:ちょうど本のディレクトリのように、データクエリ、クエリのパフォーマンスの最適化の効率を改善します。
一般的なモデルインデックス:ハッシュテーブルは、配列、探索木を命じました。
InnoDBの指数モデル:InnoDB内で、主キーテーブルを順次インデックスの形に配置され、この記憶装置のテーブルをインデックステーブル組織と呼ばれています。B +ツリーインデックス・モデルを使用してのInnoDBは、データは、B +ツリーのツリーに格納されています。
前提条件:で表を仮定し、このクエリデータ、SQL、データの10W、愛称=「CSS」ですデータ:選択* table_awardからニックネーム =「cssの」
いいえインデックス: MySQLの全表スキャンとは、このデータを見つけるために、データの10Wをスキャンしません。
インデックス: 確立するだけで、このデータ=「CSS」をスキャンする必要がある、mysqlのニックネームをニックネームフィールドインデックスの
1.1分類インデックス
主要指数は含まれていプライマリインデックス、ユニークインデックス、一般的なインデックス、フルテキストインデックス、複合インデックス、単一フィールドインデックス:5つの部分を。メインインデックスキーは自動的にメインのプライマリインデックスことを特徴とします。
1.2構文インデックス
建立索引: CREATE [UNIQUE | FULLTEXT] tbl_nameをON INDEX index_nameは(COL_NAME [(長さ)] [ASC | DESC]、... ..)。 テーブルtable_nameは、INDEX [INDEX_NAME] ADD ALTER(index_col_name内を、...) 删除索引 tbl_nameをON DROP索引INDEX_NAME。 テーブルtable_nameのDROP INDEX index_nameはをALTER; 查询索引: TABLE_NAME FROM SHOWのINDEX。 TABLE_NAME FROM SHOWのKEYS。 DESC TABLE_NAME;
インデックスの分類は、テキストの文法的な形は無感覚になっているようだ、と写真を参照できます:指標として分類 5つの部分、構文のインデックス操作(、クエリを追加、削除)の3種類。
1.3を使用するインデックス
プッシュダウンカバレッジ指数、最も左のプレフィックスインデックス、:パフォーマンスの最適化指数を改善。
インデックスをカバーします:あなたは、照会のパフォーマンスを大幅に改善、木の探索の回数を減らすことができます。
インデックスを使用
MATCH(COL1、COL2、...)AGAINST(expr)は。
最も重要な条件のインデックスを使用してクエリにクエリの条件は、インデックスの使用を必要とすることです。
次のような状況でインデックスを使用することが可能である:
作成したマルチカラム・インデックスの場合1.限り、左端の列を使用してクエリとして、インデックスは一般的に使用されます。
2、それは一定であり、インデックスを使用する前にのみ、後で%が、最初の文字でない場合は、のようなクエリを使用。
COLUMN_NAMEがnullの場合は3、インデックスを使用します。
下列的表将不使用索引:
1,如果条件中有or,即使其中有条件有索引也不会使用。
2,对于多列索引,不是使用的第一部分,则不会使用索引。
3,like查询是以%开头
4,如果列类型是字符串,那一定要在条件中将数据使用引号引用起来。否则不使用索引。
5,如果mysql估计使用全表扫描要比使用索引快,则不使用索引。
1.4 查看索引的使用情况
show status like ‘Handler_read%’;
大家可以注意:
handler_read_key:这个值越高越好,越高表示使用索引查询到的次数。
handler_read_rnd_next:这个值越高,说明查询低效。
B-Tree索引通常意味着所有的值都是按顺序存储的,并且每一个叶子页到根的距离相同。