当前位置:网站首页>Explication du principe d'appariement le plus à gauche de MySQL
Explication du principe d'appariement le plus à gauche de MySQL
2022-06-12 09:52:00 【It Maple Fighter】
MYSQL | Principe de l'appariement le plus à gauche
Principe de correspondance à gauche
Le principe de l'appariement le plus à gauche fait référence à l'indexation fédérée,Si votre SQL L'index le plus à gauche de l'index fédéré est utilisé dans l'instruction,Donc celui - ci SQL Les déclarations peuvent être appariées à l'aide de cet index fédéré.Par exemple, une représentation a un index(a,b,c),Maintenant vous avez la déclaration suivante:
select * from t where a=1 and b=1 and c =1; #Ceci permet d'utiliser l'index défini(a,b,c),Vas - y.a,b,c select * from t where a=1 and b=1; #Ceci permet d'utiliser l'index défini(a,b,c),Vas - y.a,b select * from t where b=1 and a=1; #Ceci permet d'utiliser l'index défini(a,b,c),Vas - y.a,c(mysqlIl y a un optimiseur de requête) select * from t where a=1; #Cela permet également d'utiliser l'index défini(a,b,c),Vas - y.a select * from t where b=1 and c=1; #Cela ne permet pas d'utiliser l'index défini(a,b,c) select * from t where a=1 and c=1; #Ceci permet d'utiliser l'index défini(a,b,c),Mais seulement avecaIndex,b,cIndex non disponible
C'est - à - dire que vous pouvez définir un index fédéré en utilisant le principe de correspondance le plus à gauche,Mais rendre l'index disponible pour la plupart des critères de requête. Ce qui est remarquable, c'est que,Lorsqu'une requête scope est rencontrée(>、<、between、like)Arrête de correspondre..C'est - à - dire:
select * from t where a=1 and b>1 and c =1; #Voilà.a,bPeut être utilisé(a,b,c),cIndex non disponible
Cette déclaration n'a que a,b L'index sera utilisé,c Ne peut pas utiliser l'index.Cette raison peut s'expliquer par la structure de l'index fédéré.Mais si c'est construit(a,c,b)Index commun,Eta,b,cVous pouvez utiliser l'index,Parce que l'optimiseur écrase automatiquement l'instruction de requête optimale
select * from t where a=1 and b >1 and c=1; #Si c'est construit(a,c,b)Index commun,Eta,b,cVous pouvez utiliser l'index #L'optimiseur a été réécrit comme select * from t where a=1 and c=1 and b >1;
Cela fait partie du principe du préfixe le plus à gauche,Indexindex1:(a,b,c),Je pars.a、a,b、a,b,c Trois types de requêtes,Il y a un problème.,a,cViens aussi.,Mais juste marcheraIndex des champs,Ne pars pascChamp.
Il y a un autre cas particulier dans lequel,select * from table where a = '1' and b > ‘2’ and c='3' Ce type n'aura que aAvecb Index de marche,cNe pars pas.
select * from table where a = '1' and b > ‘2’ and c='3'
Ce genre desqlDéclarations,Ina、bUne fois l'index terminé,cÇa doit être désordonné,Alors...cIl n'y a pas d'index,Base de données Je ne pense pas que ce soit aussi bon qu'un scan complet cLes champs arrivent vite.
Parindex (a,b,c)Par exemple, la création d'un tel index équivaut à la création d'un indexa、ab、abcTrois Index.Un haut de l'index trois index sont certainement une bonne chose,Après tout, chaque indice supplémentaire,Augmente les frais généraux d'écriture et d'espace disque.
Principe de l'appariement le plus à gauche
Les principes d'appariement les plus à gauche s'appliquent à l'indexation fédérée , Ainsi, nous pouvons comprendre le principe de l'appariement le plus à gauche à partir du principe de l'indexation fédérée .
Nous savons tous que le bas de l'index est un B+ Arbre,L'index fédéré reste bien sûr un B+ Arbre, Sauf que le nombre de valeurs clés de l'index fédéré n'est pas un ,Mais plusieurs.Construire un B+ Un arbre ne peut être construit que sur une seule valeur,La base de données est donc construite sur le champ le plus à gauche de l'index fédéré B+ Arbre.Exemple:Si vous créez un(a,b,c)Index commun pour,Donc son arbre d'index est comme ça:
C'est une image en forme de (a,b,c)Indexé conjointement b+ Arbre, Où les noeuds non foliaires stockent l'index du premier mot - clé a, Et le noeud foliaire stocke les données de trois mots clés .Comme vous pouvez le voir ici a C'est ordonné.,Et b,c Tout est désordonné.Mais quand a Au même moment,b C'est ordonné.,b Au même moment,c C'est encore ordonné. . En comprenant la structure de l'index fédéré , Il est donc bon de comprendre pourquoi la requête scope s'arrête si elle est rencontrée dans le principe de correspondance le plus à gauche .Par select * from t where a=5 and b>0 and c =1; #Voilà.a,bPeut être utilisé(a,b,c),cJe ne peux pas Par exemple,Quand on a demandé b Après la valeur de( C'est une valeur de plage ),c C'est désordonné.. Il n'est donc pas possible de déterminer exactement quelle ligne prendre en fonction de l'index fédéré .
Résumé
In InnoDB L'index de l'Union n'a identifié que le premier(Valeur à gauche)Après,Pour déterminer la valeur suivante.S'il y a une requête scope,L'index suivant le champ de requête scope utilisé dans l'index fédéré est dans cet article SQL Ça ne marchera même pas.Ce qui est remarquable, c'est que,in Et = Peut être désordonné,Comme avoir un index(a,b,c),Déclarations select * from t where c =1 and a=1 and b=1,Une telle déclaration peut également utiliser la correspondance la plus à gauche,Parce que MySQL Il y a un optimiseur dans,Il va analyser SQL Déclarations,Optimisez - le sous une forme que l'index peut correspondre,C'est - à - dire: select * from t where a =1 and a=1 and c=1
Pourquoi utiliser un index fédéré
Réduire les frais généraux.Créer un index fédéré(col1,col2,col3),En fait, c'est l'équivalent de la construction(col1),(col1,col2),(col1,col2,col3)Trois Index.Chaque index supplémentaire,Augmente les frais généraux d'écriture et d'espace disque.Pour les tableaux de données volumineuses,L'utilisation de l'index fédéré réduit considérablement les frais généraux!
écraser l'index.Pour l'index fédéré(col1,col2,col3),S'il y asql: select col1,col2,col3 from test where col1=1 and col2=2.AlorsMySQLLes données peuvent être obtenues directement en traversant l'index,Sans avoir à retourner le formulaire,Cela réduit considérablement le hasardioFonctionnement.DiminutionioFonctionnement,Spécialement aléatoireioEn fait, oui.dbaPrincipales stratégies d'optimisation.Alors...,Dans une application réelle,L'indice de couverture est l'une des principales méthodes d'optimisation pour améliorer les performances.
Efficacité élevée.Plus de colonnes d'index,Moins de données filtrées par index.Oui.1000WTableau des données,Il y a:sql:select from table where col1=1 and col2=2 and col3=3,Supposons que chaque condition puisse être filtrée10%Données,S'il n'y a qu'un seul indice de valeur,L'index permet de filtrer1000W10%=100wDonnées,Puis retournez à la table à partir de100wCorrespondance trouvée dans les donnéescol2=2 and col3= 3Données,Puis trier,Pagination;S'il s'agit d'un index fédéré,Filtrer par index1000w10% 10% *10%=1w,Amélioration de l'efficacité!
边栏推荐
- 【极术公开课预告】Arm最强MCU内核Cortex-M85处理器,全方位助力物联网创新(有抽奖)
- I Regular expression to finite state automata: regular expression to NFA
- 【clickhouse专栏】基础数据类型说明
- 《第五项修炼》读书笔记
- string类对象的访问及遍历操作
- 2022 pole technology communication - the dispute over anmou technology is settled, and the cornerstone of the local semiconductor industry is more stable
- 基于 Ceph 对象存储的实战兵法
- SAP HANA 错误消息 SYS_XSA authentication failed SQLSTATE - 28000
- There must be something you want to know about software testing experience sharing
- How to write test cases?
猜你喜欢

I Regular expression to finite state automata: regular expression to NFA

001: what is a data lake?

SAP Hana error message sys_ XSA authentication failed SQLSTATE - 28000

链式哈希表
Share the basic knowledge of software testing and write something you don't know

Autojs微信研究:微信不同的版本或模拟器上的微信里的控件ip是不同的。

SAP HANA 错误消息 SYS_XSA authentication failed SQLSTATE - 28000

【极术公开课预告】Arm最强MCU内核Cortex-M85处理器,全方位助力物联网创新(有抽奖)

Crazy temporary products: super low price, big scuffle and new hope
![[preview of the open class of Jishu] arm's strongest MCU core cortex-m85 processor helps the innovation of the Internet of things in an all-round way (there is a lottery)](/img/25/c3af3f51c04865820e3bbe2f010098.png)
[preview of the open class of Jishu] arm's strongest MCU core cortex-m85 processor helps the innovation of the Internet of things in an all-round way (there is a lottery)
随机推荐
In 2026, the capacity of China's software defined storage market will be close to US $4.51 billion
总有一根阴线(上影线)会阻止多军前进的脚步,总有一个阳线(下影线)会阻挡空军肆虐的轰炸
Difference between MySQL unreal reading and non repeatable reading
基于SSM实现水果商城批发平台
001: what is a data lake?
卖疯了的临期产品:超低价、大混战与新希望
C # getting started series (12) -- string
Mysql5.7 partition table
C语言递归文件夹的代码
Record and store user video playback history selection
行业分析怎么做
Thread deadlock and its solution
2022 pole technology communication - the dispute over anmou technology is settled, and the cornerstone of the local semiconductor industry is more stable
Financial test interview questions to help you get the offer
markdown_ Picture side by side scheme
Essentials reading notes
在线电路仿真以及开源电子硬件设计介绍
[cloud native] what exactly does it mean? This article shares the answer with you
UE4_ Explore the method of creating background scenes with ready-made resources
Selenium interview question sharing