Heim  >  Artikel  >  Datenbank  >  MySQL-Optimierung (4) Indexabdeckung und optimaler Index

MySQL-Optimierung (4) Indexabdeckung und optimaler Index

黄舟
黄舟Original
2016-12-29 16:09:121283Durchsuche

Indexabdeckung** Ein sehr wichtiges Konzept ist die Suche im Index! ! !

Wenn die abgefragte Spalte Teil des Index ist, muss die Abfrage nur für die Indexdatei durchgeführt werden und es ist nicht erforderlich, zur Datensuche auf die Festplatte zurückzukehren

Diese Art von Abfrage ist sehr schnell und wird als „Indexabdeckung“ bezeichnet

Nicht gruppierte Indexindexdateien entsprechen dem Zurückspulen von Daten, was Zeit verschwendet

Der Unterschied zwischen Index und Daten

Der Index ist ein effizient organisierter Baum, Knoten, die Suche nach Blattstruktur ist besser als Daten

Der Index kann zur Abfrage in den Speicher importiert werden

Die Datenstruktur des Index selbst ist einfach und lässt sich sehr schnell im Gedächtnis speichern

. . . . . . . . . Infolgedessen war es sofort voll, als ich zurückkam. . . Ich wische. . .

Wenn Sie also zwei Indizes erstellen, index( uid , Aid)

Wenn die gewünschten Daten im Indexbaum abgedeckt sind, wählen Sie beispielsweise uid aus msg, wobei Aid = 1 ist

Der Index deckt alles ab, was Sie nachschlagen möchten, daher ist die Geschwindigkeit und Effizienz beim direkten Abrufen des Index aus dem Speicher sehr hoch, sodass Sie nicht zurückgehen und suchen müssen

Optimaler Index:

Häufig abfragen, unterscheiden Hoher Grad, kleine Länge

Versuchen Sie, gemeinsame Felder abzudecken, ------》Indexabdeckung

Das linke Präfix ist nicht einfach Um zu unterscheiden, kehren Sie die URL um, um den Inhalt zu erhalten. Das linke Präfix ist gut unterscheidbar ein Index für urlcrc anstelle der Indizierung der URL, um eine Indizierung zu vermeiden

Erklären, wie man den Effekt ansieht;




Wenn SQL gespeichert ist, ist crcurl== crc32( url),

Da das Ergebnis von crc eine 32-Bit-Int-Zahl ohne Vorzeichen ist, wenn die Wenn die Datenmenge 4 Milliarden übersteigt, wird es Duplikate geben, aber es lohnt sich

(Die Indexlänge beträgt int4 Bytes)
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;


Mehrfachindexdesign

Aber gemessen am tatsächlichen Geschäft des Einkaufszentrums wählen Kunden im Allgemeinen zuerst große Kategorien ->kleine Kategorien-> Marke,

Wählen Sie schließlich (1)index(cat_id,brand_id), + index(cat_id, shop_price), um den Index zu erstellen

Sie können sogar (3)index(cat_id,brand_id,shop_price) ), 3 redundante Indexfelder hinzufügen. . .



Aber die ersten 2 Spalten in (3) sind die gleichen wie die ersten 2 Spalten in (1), dann entfernen Sie (1)



index (cat_id,price) und index(cat_id,brand_id,shop_price); das heißt, das Prinzip des linken Präfixes kann redundant sein, aber nicht wiederholt werden





Das Oben ist die MySQL-Optimierung (4) Indexabdeckung und optimaler Indexinhalt Weitere verwandte Inhalte finden Sie auf der chinesischen PHP-Website (www.php.cn)!


Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn