ホームページ >データベース >mysql チュートリアル >mysqlの最適化 (4) インデックスカバレッジと最適なインデックス
インデックス カバレッジ** 非常に重要な概念は、インデックスでの検索です。 ! !
クエリされた列がたまたまインデックスの一部である場合、クエリはインデックス ファイルに対してのみ実行する必要があり、データを見つけるためにディスクに戻る必要はありません
この種のクエリは非常に複雑です。高速であり、「インデックス カバレッジ」と呼ばれます
ではありません インデックス ファイルは、データの巻き戻しの無駄な時間に相当します
インデックスとデータの違い
インデックスは、効率的に編成されたツリー、ノードであり、リーフ構造の検索の方が優れていますデータよりも
インデックスをクエリ用にメモリにインポートできます
インデックス自体のデータ構造はシンプルで、メモリに入れるのが非常に高速です
。 。 。 。 。 。 。 。 。結果、帰ってきたらすぐに満席でした。 。 。拭きます。 。 。
したがって、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;
しかし、モールの実際のビジネスから判断すると、顧客は通常、最初に大カテゴリ -> 小カテゴリ -> ブランドを選択し、最後に (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)!