なぜ検索インデックスをスピードアップすることができます

なぜ検索インデックスをスピードアップすることができます

MySQLは(レコードがページ内に存在する)基本的なストレージ構造のページです。

各データ・ページは、二重リンクリストを構成することができる。各データページに記録され再度単独でリンクされたリストから構成することができ、各データ・ページのための時間の主キーのレコードを見つけるために、その内部に格納されたページ・ディレクトリ・レコードを生成しますページディレクトリ内の二分法は、迅速に対応する溝を配置するために使用され、その後、検索迅速に特定することができる記録された対応する溝記録パケットを通過させることができます

私たちが書くのであれば、select * from user where indexname = 'xxx'任意の最適化SQL文なしでこれを、デフォルトが行います。

  1. 二重リンクリストをトラバースする必要性、ページを見つける:レコードがページに移動
  2. ページが存在するから適切なレコードを検索:問い合わせが主キーに基づいていないため、単一のリストにページを横断します

明らかに、この外観は、大量のデータの場合には非常に遅くなります!そのような時間計算量はO(N)です。

行わ指数は、私たちは、クエリの速度を加速することができますか?実際には、データは整然とした障害(相対的に言って)次のようになります。

記録簡単にステップ8のIDを検索するには:

それは明らかです:私たちは二重に対応するページを見つけるためにリストをリンクされているインデックスを通過する必要がない、あなたは今すぐに「カタログ」を通じて、対応するページに移動することができます!(バイナリ検索は、時間の複雑さは、およそO(LOGN)です)

実際には、木の根本的な構造は、私たちはすぐに対応するレコードを検索することができ、実装のツリーとしてB +、B +ツリーです。

冗長インデックス

冗長なインデックスは、(名前、都市)および(名称)冗長インデックスこれらの二つのインデックスが冗長インデックスである、クエリが後者を打つことができる、次に、それが確実にヒットを打つことができ、同じ機能のインデックスを参照確かですほとんどの場合、旧缶ヒットは、あなたが新しいインデックスを作成するのではなく、既存のインデックスを拡張しようとする必要があります。

MySQLS.7バージョンが完了したら、SYSライブラリを照会することができschema_redundant_indexes、冗長性インデックステーブルを参照してください

インデックスを追加

1.追加PRIMARY KEY(主キーインデックス)

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

2. [追加UNIQUE(ユニークインデックス)

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

3. [追加] INDEX(一般的な指標)

ALTER TABLE `table_name` ADD INDEX index_name ( `column` )

4. [追加FULLTEXT(フルテキストインデックス)

ALTER TABLE `table_name` ADD FULLTEXT ( `column`)

5. [追加のマルチカラムインデックス

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

おすすめ

転載: www.cnblogs.com/kristse/p/Theindex.html