ホームページ  >  記事  >  データベース  >  mysqlインデックスは何をするのでしょうか?

mysqlインデックスは何をするのでしょうか?

little bottle
little bottleオリジナル
2019-05-10 16:55:376775ブラウズ

データベース内のインデックスは、大学図書館に構築されている書誌インデックスに似ており、データ検索の効率を向上させ、データベースの IO コストを削減できます。 MySQL のパフォーマンスは 300 万レコードあたりから徐々に低下し始めるため、大量のデータに遭遇した場合にはインデックスを作成することが非常に必要になります。

mysqlインデックスは何をするのでしょうか?

#MySQL のインデックスの正式な定義は次のとおりです。インデックスは、MySQL がデータを効率的に取得するのに役立つデータ構造です。

これは簡単に言うと、素早く検索して並べ替えることができるデータ構造であると理解できます。

Mysql インデックスは主に、B Tree インデックスと Hash インデックスの 2 つの構造があります。

通常、インデックスと呼ばれるものは、特に指定がない限り、B ツリー構造で編成されたインデックス (B ツリー インデックス) を指します。インデックスは上の図に示されています。

一番外側の水色のディスクブロック1には、データ17、35(紺色)とポインタP1、P2、P3(黄色)が含まれています。 P1 ポインタは 17 未満のディスク ブロックを表し、P2 は 17 ~ 35 の間で、P3 は 35 より大きいディスク ブロックを指します。実データは子葉ノード、つまり最下層の 3、5、9、10、13... に存在します。非葉ノードには実データは格納されず、17 などの検索方向をガイドするデータ項目のみが格納されます。 35.

検索プロセス: たとえば、28 個のデータ項目を検索するには、まずディスク ブロック 1 をメモリにロードし、I/O が発生し、二分探索を使用して P2 ポインタを決定します。次に、28 が 26 と 30 の間にあることがわかり、ディスク ブロック 3 が P2 ポインタのアドレスを通じてメモリにロードされ、2 番目の I/O が発生します。同様にディスク ブロック 8 が見つかり、3 回目の I/O が発生します。

実際の状況では、B ツリーの上記 3 つの層は数百万のデータを表すことができます。数百万のデータには、数百万の I/O ではなく 3 つの I/O のみが必要です。時間の短縮は大幅です。

以上がmysqlインデックスは何をするのでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。