Maison >base de données >tutoriel mysql >Obtenez une compréhension approfondie des index combinés dans MySQL et découvrez les différences par rapport aux index à colonne unique

Obtenez une compréhension approfondie des index combinés dans MySQL et découvrez les différences par rapport aux index à colonne unique

青灯夜游
青灯夜游avant
2021-11-03 19:28:157167parcourir

Cet article vous amènera à comprendre l'index combiné dans MySQL, à présenter les méthodes de création et de suppression de l'index combiné, à parler des pièges de l'index combiné, de la différence entre l'index combiné et l'index à colonne unique, ainsi que des scénarios d'utilisation. de l'index combiné. J'espère qu'il sera utile à tout le monde !

Obtenez une compréhension approfondie des index combinés dans MySQL et découvrez les différences par rapport aux index à colonne unique

Qu'est-ce qu'un index composite ? Un index sur deux colonnes ou plus est appelé un index conjoint, et un index conjoint est également appelé un index composite. [Recommandations associées : Tutoriel vidéo MySQL

]

Par exemple, l'index est index clé (a,b,c) qui peut prendre en charge a | c 3 combinaisons sont utilisées pour la recherche, mais b,c n'est pas pris en charge pour la recherche. Lorsqu'elle est utilisée, la combinaison de a, c peut également être utilisée, mais en fait seul l'index de a est utilisé

Obtenez une compréhension approfondie des index combinés dans MySQL et découvrez les différences par rapport aux index à colonne unique

key index (a,b,c) 可以支持 a | a,b| a,b,c 3 种组合进行查找,但不支持 b,c 进行查找。在使用的时候,a, c 组合也可以用,但实际上只用到了 a 的索引

Obtenez une compréhension approfondie des index combinés dans MySQL et découvrez les différences par rapport aux index à colonne unique

创建组合索引

-- 普通的组合索引
create index index_name on table_name (column1, column2, ...)
-- 组合要求唯一的索引,相比与上一种,多出了 【unique】关键字
create unique index index_name on table_name (column1, column2, ...)

Obtenez une compréhension approfondie des index combinés dans MySQL et découvrez les différences par rapport aux index à colonne unique

删除组合索引

-- 用法 1
drop index index_name on talbe_name
-- 用法 2
alter table table_name drop index index_name
-- 用法 3,对 2 的包装
alter table table_name drop primary key

单列索引陷阱

Obtenez une compréhension approfondie des index combinés dans MySQL et découvrez les différences par rapport aux index à colonne unique

Obtenez une compréhension approfondie des index combinés dans MySQL et découvrez les différences par rapport aux index à colonne unique

如图所示,我们创建了 2 个索引,在 where 中使用 and 进行查询是,从执行计划里看只使用到了第一个条件上的索引,后续的索引直接被忽略掉

组合索引陷阱

如图,现在建立组合索引 a,b,c

Obtenez une compréhension approfondie des index combinés dans MySQL et découvrez les différences par rapport aux index à colonne unique

上图的条件查询为 b,a,c,mysql 会自动处理条件顺序变为 a,b,c , 再使用定义好的组合索引

Obtenez une compréhension approfondie des index combinés dans MySQL et découvrez les différences par rapport aux index à colonne unique

上图的查询条件是 b,a,同样的,mysql 调整条件顺序为 a,b,再走组合索引

Obtenez une compréhension approfondie des index combinés dans MySQL et découvrez les différences par rapport aux index à colonne unique

上图的查询条件是 b,c,很明显,由于没有使用 a 作为条件列,导致 mysql 没有使用组合索引

与单列索引的区别

联合索引中列的顺序非常重要,从左原则。

单个索引就是一个一个起作用,也就是说有三个单个索引,哪个条件查询在前哪个起作用,其他不起作用。

组合索引使用场景

  • where 条件会经常出现的,并且当前表的数量比较大。

  • where 条件中是用 and 而非 orCréer un index combiné

  • rrreee
  • Obtenez une compréhension approfondie des index combinés dans MySQL et découvrez les différences par rapport aux index à colonne unique

    Supprimer l'index combiné

rrreee

Piège d'index à colonne unique

Obtenez une compréhension approfondie des index combinés dans MySQL et découvrez les différences par rapport aux index à colonne unique🎜🎜Obtenez une compréhension approfondie des index combinés dans MySQL et découvrez les différences par rapport aux index à colonne unique🎜🎜Comme le montre l'image, nous avons créé 2 index et utilisé et Lors de l'interrogation, à partir du plan d'exécution, seul l'index de la première condition est utilisé, et les index suivants sont directement ignorés🎜

🎜Piège d'index combiné 🎜 🎜🎜Comme le montre l'image, créez maintenant l'index combiné a, b, c🎜🎜Obtenez une compréhension approfondie des index combinés dans MySQL et découvrez les différences par rapport aux index à colonne unique🎜🎜La requête de condition dans l'image ci-dessus est b,a,c, et mysql traitera automatiquement la séquence de conditions dans a,b,c , puis utilisez l'index combiné défini 🎜🎜<img src="https://img.php.cn/upload/image/606/915/328/163593860143734Obtenez%20une%20compr%C3%A9hension%20approfondie%20des%20index%20combin%C3%A9s%20dans%20MySQL%20et%20d%C3%A9couvrez%20les%20diff%C3%A9rences%20par%20rapport%20aux%20index%20%C3%A0%20colonne%20unique" title="163593860143734Obtenez une compréhension approfondie des index combinés dans MySQL et découvrez les différences par rapport aux index à colonne unique" alt="Obtenez une compréhension approfondie des index combinés dans MySQL et découvrez les différences par rapport aux index à colonne unique">🎜🎜La condition de requête dans l'image ci-dessus est <code>b,a De même, mysql ajuste l'ordre des conditions à a,b<.>, puis utilise l'index combiné 🎜🎜<img src="https://img.php.cn/upload/image/149/823/571/1635938629900948.png" title="1635938629900948.png" alt="Obtenez une compréhension approfondie des index combinés dans MySQL et découvrez les différences par rapport aux index à colonne unique">🎜🎜Up La condition de requête du graphique est <code>b,c Évidemment, parce que a n'est pas utilisé comme colonne de condition, MySQL ne le fait pas. utilisez l'index combiné🎜

🎜Différences par rapport à un index à colonne unique🎜🎜🎜L'ordre des colonnes dans un index conjoint est très important, du principe de gauche. 🎜🎜Les index simples fonctionnent un par un, c'est-à-dire qu'il existe trois index uniques, quelle que soit la requête de condition qui fonctionne en premier, et les autres ne fonctionnent pas. 🎜

🎜Scénarios d'utilisation d'index combinés🎜🎜
    🎜🎜où les conditions apparaîtront souvent et le nombre de tables actuelles sera être comparé grand. 🎜🎜🎜🎜where Lors de l'utilisation de et au lieu de ou dans la condition. 🎜🎜🎜🎜L'index conjoint est plus approprié qu'un index unique, car l'index occupe une certaine quantité d'espace disque, ce qui signifie qu'il y a une certaine surcharge. S'il y a plus d'un index unique, il y aura alors plus de gaspillage de plusieurs. ressources. L'index conjoint équivaut à plusieurs. Créez un index sur chaque colonne et ne le construisez qu'une seule fois, ce qui est très approprié dans les conditions et. 🎜🎜🎜🎜Pour plus de connaissances sur la programmation, veuillez visiter : 🎜Vidéo de programmation🎜 ! ! 🎜

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer