ホームページ  >  記事  >  データベース  >  mysqlの最適化 (4) インデックスカバレッジと最適なインデックス

mysqlの最適化 (4) インデックスカバレッジと最適なインデックス

黄舟
黄舟オリジナル
2016-12-29 16:09:121283ブラウズ

インデックス カバレッジ** 非常に重要な概念は、インデックスでの検索です。 ! !

クエリされた列がたまたまインデックスの一部である場合、クエリはインデックス ファイルに対してのみ実行する必要があり、データを見つけるためにディスクに戻る必要はありません

この種のクエリは非常に複雑です。高速であり、「インデックス カバレッジ」と呼ばれます

ではありません インデックス ファイルは、データの巻き戻しの無駄な時間に相当します

インデックスとデータの違い

インデックスは、効率的に編成されたツリー、ノードであり、リーフ構造の検索の方が優れていますデータよりも

インデックスをクエリ用にメモリにインポートできます

インデックス自体のデータ構造はシンプルで、メモリに入れるのが非常に高速です

。 。 。 。 。 。 。 。 。結果、帰ってきたらすぐに満席でした。 。 。拭きます。 。 。

したがって、2 つのインデックスを作成するとします。メモリ内のインデックスは非常に高速かつ効率的であり、戻って検索する必要はありません。 最適なインデックス:

頻繁なクエリ、高度な差別化、短い長さ

可能な限り共通のフィールドをカバーするようにしてください。 , ------》インデックスカバー

左側のプレフィックスは区別しにくいため、URLを反転してコンテンツを転送します

一意に区別するための疑似ハッシュcrc32()関数crc32 ('http://wwww.baidu.com'); URL のインデックスを作成する代わりに、その効果を確認する方法を学びましょう

同時に url_hash 列を保存します。


create table t10 (
id int primary key,
url char(60) not null default ''
);
insert into t10 values 
(1,'http://www.baidu.com'),
(2,'http://www.sina.com'),
(3,'http://www.sohu.com.cn'),
(4,'http://www.onlinedown.net'),
(5,'http://www.gov.cn');
alter table t10 add urlcrc int unsigned not null;

SQLを保存するとき、crcurl== crc32(url),

crcなので結果は32ビット整数の符号なし数値になるので、データが40億を超えると重複が発生しますが、それだけの価値はあります

(インデックスの長さは int4 バイトです)



複数のインデックス設計

しかし、モールの実際のビジネスから判断すると、顧客は通常、最初に大カテゴリ -> 小カテゴリ -> ブランドを選択し、最後に (1) インデックスを選択します。 (cat_id, brand_id), + インデックス (cat_id, shop_price) を追加してインデックスを作成します

(3)index(cat_id,brand_id,shop_price)、3 つの冗長インデックス冗長フィールドを追加することもできます。 。 。



ただし、(3) の最初の 2 列は (1) の最初の 2 列と同じなので、(1) を削除します



index(cat_id,price) とindex(cat_id,brand_id,shop_price) ; また、左側の接頭辞の原則は冗長である可能性がありますが、繰り返すことはできないことを意味します





上記は、mysql の最適化 (4) インデックス カバレッジと最適なインデックスの内容です。さらに関連する内容については、PHP に注目してください。中国語のウェブサイト (www.php.cn)!




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