Maison >base de données >tutoriel mysql >optimisation mysql (4) couverture de l'index et index optimal

optimisation mysql (4) couverture de l'index et index optimal

黄舟
黄舟original
2016-12-29 16:09:121322parcourir

Couverture de l'index** Un concept très important est de rechercher sur l'index ! ! !

Si la colonne interrogée fait partie de l'index, alors la requête ne doit être effectuée que sur le fichier d'index, et il n'est pas nécessaire de revenir sur le disque pour trouver des données
<.>Ce type de requête est très rapide et est appelé « couverture d'index »

Le fichier d'index d'index non clusterisé correspond au rembobinage des données, ce qui fait perdre du temps

La différence entre index et données

L'index est un arbre, un nœud organisé efficacement, la structure des feuilles de recherche est meilleure que les données

L'index peut être importé dans la mémoire pour la requête

La structure des données de l'index en soi, c'est simple et il est très rapide de le mettre en mémoire

. . . . . . . . . Du coup, c'était plein dès mon retour. . . J'essuie. . .

Donc, si vous créez deux index index (uid, aid)

Si les données que vous souhaitez ont été couvertes dans l'arborescence d'index, par exemple, sélectionnez uid from msg où aid = 1

L'index a couvert ce que vous souhaitez rechercher, donc la vitesse et l'efficacité de la récupération de l'index directement à partir de la mémoire sont très rapides, il n'est donc pas nécessaire de revenir en arrière et de rechercher

Index optimal :

Requérez fréquemment, distinguez Haut degré, petite longueur

Essayez de couvrir les champs communs, ------》Couverture de l'index

Le préfixe de gauche n'est pas facile pour distinguer, inversez l'url pour obtenir le contenu ; le préfixe de gauche est très distinctif

Pseudo hash crc32() pour distinguer de manière unique crc32 ('http://wwww.baidu.com'); un index pour urlcrc au lieu d'indexer l'url pour éviter l'indexation

Apprenez à expliquer pour voir l'effet

Effet d'index de pseudo-hash

Enregistrer la colonne url_hash en même temps


create table t10 (
id int primary key,
url char(60) not null default &#39;&#39;
);
insert into t10 values 
(1,&#39;http://www.baidu.com&#39;),
(2,&#39;http://www.sina.com&#39;),
(3,&#39;http://www.sohu.com.cn&#39;),
(4,&#39;http://www.onlinedown.net&#39;),
(5,&#39;http://www.gov.cn&#39;);
alter table t10 add urlcrc int unsigned not null;
Lorsque sql est stocké, crcurl== crc32( url),


Parce que le résultat de crc est un nombre entier non signé de 32 bits, lorsque le les données dépassent 4 milliards, il y aura duplication, mais cela en vaut la peine

(La longueur de l'index est de 4 octets entiers)



Conception d'index multiples
Mais à en juger par l'activité réelle du centre commercial, les clients choisissent généralement d'abord les grandes catégories ->petites catégories-> Marque,

Choisissez enfin (1)index(cat_id,brand_id), index(cat_id,shop_price; ) pour construire l'index

Vous pouvez même ajouter (3)index(cat_id,brand_id,shop_price) ,3 champs redondants d'index redondants. . .



Mais les 2 premières colonnes de (3) sont les mêmes que les 2 premières colonnes de (1), puis supprimez (1)



index (cat_id,price) et index(cat_id,brand_id,shop_price); c'est-à-dire que le principe du préfixe de gauche peut être redondant mais ne peut pas être répété



Le ci-dessus est l'optimisation mysql ( 4) Couverture de l'index et contenu optimal de l'index. Pour plus de contenu connexe, veuillez faire attention au site Web PHP chinois (www.php.cn) !


Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn