convention d'indexation


1. [Obligatoire] Les champs présentant des caractéristiques commerciales uniques, même les champs combinés, doivent être intégrés dans des index uniques.

Remarque : Ne pensez pas que l'index unique affecte la vitesse d'insertion. Cette perte de vitesse peut être ignorée, mais l'amélioration de la vitesse de recherche est évidente. De plus, même s'il existe un contrôle de somme de contrôle très complet au niveau de l'application ; couche, tant qu'il n'y a pas d'index uniques, selon la loi de Murphy, doit avoir des données sales.


2. [Obligatoire] Il est interdit de rejoindre plus de trois tables. Les types de données des champs qui doivent être joints doivent être absolument cohérents ; lors de l'exécution de requêtes d'association multi-tables, assurez-vous que les champs associés doivent avoir des index.

Remarque :

Même lorsque vous joignez deux tables, vous devez faire attention à l'index de la table et aux performances SQL.


3. [Obligatoire] Lors de la création d'un index sur un champ varchar, vous devez spécifier la longueur de l'index. Il n'est pas nécessaire d'indexer l'intégralité du champ. La longueur de l'index est déterminée en fonction de la distinction réelle du texte.

Explication :

La longueur et la distinction de l'index sont une paire de contradictions. Généralement, pour les données de type chaîne, pour un index d'une longueur de 20, la distinction sera aussi élevée que 90 % ou plus. use count(distinct left( column name , the index length))/count(*) est déterminé par le degré de distinction.

4. [Obligatoire] Il est strictement interdit d'utiliser le flou gauche ou le flou complet dans la recherche de page. Si nécessaire, veuillez utiliser le moteur de recherche pour résoudre le problème.


Explication : 

Le fichier d'index a la fonctionnalité de correspondance de préfixe la plus à gauche de B-Tree. Si la valeur à gauche n'est pas déterminée, alors cet index ne peut pas être utilisé.

5. [Recommandé] S'il y a un ordre par scénario, veuillez faire attention à l'ordre de l'index. Le dernier champ trié par fait partie de l'index combiné et est placé à la fin de l'ordre de combinaison d'index pour éviter les situations file_sort et affecter les performances des requêtes.


Exemple positif :

où a =? a >10 ORDER BY b; Index a _ b ne peut pas être trié.

6. [Recommandé] Utilisez des index de couverture pour effectuer des opérations de requête afin d'éviter les opérations de retour de table.

Explication : Si un livre a besoin de savoir quel est le titre du chapitre 11, va-t-il se tourner vers la page correspondant au chapitre 11 ? Parcourez simplement le répertoire pendant un moment. Ce répertoire sert d'index de couverture.

Exemple positif : Types d'index pouvant être créés : index de clé primaire, index unique, index ordinaire et index de couverture est un effet d'une requête. En utilisant le résultat d'explication, la colonne supplémentaire apparaîtra : en utilisant index .


7. [Recommandé] Utilisez une corrélation retardée ou une sous-requête pour optimiser plusieurs scénarios de pagination.

Explication : MySQL ne saute pas les lignes de décalage, mais prend les lignes de décalage + N, puis renvoie les lignes de décalage avant d'abandonner, renvoyant N lignes. Lorsque le décalage est particulièrement important, l'efficacité est très faible, ou le contrôle. Le nombre total de pages renvoyées, ou la réécriture SQL pour les pages dépassant un certain seuil.

Exemple positif : Localisez d'abord rapidement le segment d'identifiant qui doit être obtenu, puis associez :

SELECT a.* FROM table 1 a, (sélectionnez l'identifiant dans la table 1 où condition LIMIT 100000,20) b où a.id =b.id


8. [Recommandation] L'objectif de l'optimisation des performances SQL : atteindre au moins le niveau de plage, l'exigence est le niveau de référence, s'il peut être consts

le meilleur.

Remarque :

1) Il y a au plus une ligne correspondante (clé primaire ou index unique) dans une seule table consts, et les données peuvent être lues pendant la phase d'optimisation.

2) la réf fait référence à l'utilisation d'un index normal.

3) range effectue la récupération de plage sur l'index.

Contre exemple : expliquez le résultat de la table, tapez = index, analyse complète du fichier physique d'index, la vitesse est très lente, ce niveau d'index est encore faible par rapport à la plage, et est éclipsé par le plein analyse de table.


9. [Recommandation] Lors de la construction d'un index combiné, celui le plus différencié se trouve à l'extrême gauche.

Exemple positif : Si où a =? et b =? , la colonne a est presque proche d'une valeur unique, alors il vous suffit de créer un index idx_a.

Remarque : Lorsqu'il existe une condition de jugement mixte de signe non égal et de signe égal, lors de la construction de l'index, veuillez placer la colonne de la condition de signe égal devant. Par exemple : où a >?et b =? Alors même si a a un degré de distinction plus élevé, b doit être placé au premier plan de l'index.


10. [Référence] Évitez les malentendus extrêmes suivants lors de la création d'un index :

1) Malentendu qu'une requête nécessite un index.

2) Croire à tort que les index vont consommer de l'espace et ralentir sérieusement les mises à jour et les nouveaux ajouts.

3) On croit à tort que les index uniques doivent toujours être résolus en « vérifiant d'abord puis en insérant » au niveau de la couche d'application.