Heim > Datenbank > MySQL-Tutorial > Erhalten Sie ein umfassendes Verständnis der kombinierten Indizes in MySQL und sehen Sie die Unterschiede zu einspaltigen Indizes

Erhalten Sie ein umfassendes Verständnis der kombinierten Indizes in MySQL und sehen Sie die Unterschiede zu einspaltigen Indizes

青灯夜游
Freigeben: 2021-11-03 19:29:05
nach vorne
7128 Leute haben es durchsucht

In diesem Artikel erfahren Sie mehr über den kombinierten Index in MySQL, stellen die Methoden zum Erstellen und Löschen des kombinierten Index vor, sprechen über die Fallstricke des kombinierten Index, den Unterschied zwischen dem kombinierten Index und dem Einzelspaltenindex sowie die Verwendungsszenarien des kombinierten Indexes wird hoffentlich für alle hilfreich sein!

Erhalten Sie ein umfassendes Verständnis der kombinierten Indizes in MySQL und sehen Sie die Unterschiede zu einspaltigen Indizes

Was ist ein zusammengesetzter Index? Ein Index für zwei oder mehr Spalten wird als gemeinsamer Index bezeichnet, und ein gemeinsamer Index wird auch als zusammengesetzter Index bezeichnet. [Verwandte Empfehlungen: MySQL-Video-Tutorial

Zum Beispiel ist der Index key index (a,b,c), der a,b| unterstützen kann. c 3 Kombinationen werden für die Suche verwendet, aber b,c wird für die Suche nicht unterstützt. Bei Verwendung kann auch die Kombination von a, c verwendet werden, tatsächlich wird jedoch nur der Index von a verwendetErhalten Sie ein umfassendes Verständnis der kombinierten Indizes in MySQL und sehen Sie die Unterschiede zu einspaltigen Indizes

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

Erhalten Sie ein umfassendes Verständnis der kombinierten Indizes in MySQL und sehen Sie die Unterschiede zu einspaltigen Indizes

创建组合索引

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

Erhalten Sie ein umfassendes Verständnis der kombinierten Indizes in MySQL und sehen Sie die Unterschiede zu einspaltigen Indizes

删除组合索引

-- 用法 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
Nach dem Login kopieren

单列索引陷阱

Erhalten Sie ein umfassendes Verständnis der kombinierten Indizes in MySQL und sehen Sie die Unterschiede zu einspaltigen Indizes

Erhalten Sie ein umfassendes Verständnis der kombinierten Indizes in MySQL und sehen Sie die Unterschiede zu einspaltigen Indizes

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

组合索引陷阱

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

Erhalten Sie ein umfassendes Verständnis der kombinierten Indizes in MySQL und sehen Sie die Unterschiede zu einspaltigen Indizes

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

Erhalten Sie ein umfassendes Verständnis der kombinierten Indizes in MySQL und sehen Sie die Unterschiede zu einspaltigen Indizes

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

Erhalten Sie ein umfassendes Verständnis der kombinierten Indizes in MySQL und sehen Sie die Unterschiede zu einspaltigen Indizes

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

与单列索引的区别

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

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

组合索引使用场景

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

  • where 条件中是用 and 而非 or

    rrreee
  • Erhalten Sie ein umfassendes Verständnis der kombinierten Indizes in MySQL und sehen Sie die Unterschiede zu einspaltigen Indizes
  • Kombinierten Index löschen

  • rrreee

Einzelspaltiger Index-Trap

Erhalten Sie ein umfassendes Verständnis der kombinierten Indizes in MySQL und sehen Sie die Unterschiede zu einspaltigen Indizes

🎜Erhalten Sie ein umfassendes Verständnis der kombinierten Indizes in MySQL und sehen Sie die Unterschiede zu einspaltigen Indizes🎜🎜Wie im Bild gezeigt, haben wir 2 Indizes erstellt und and Bei der Abfrage aus dem Ausführungsplan wird nur der Index für die erste Bedingung verwendet und nachfolgende Indizes werden direkt ignoriert🎜

🎜Kombinierte Indexfalle 🎜 🎜🎜Wie im Bild gezeigt, erstellen Sie nun den kombinierten Index a, b, c🎜🎜Erhalten Sie ein umfassendes Verständnis der kombinierten Indizes in MySQL und sehen Sie die Unterschiede zu einspaltigen Indizes🎜🎜Die Bedingungsabfrage im obigen Bild lautet b,a,c, und MySQL verarbeitet die Bedingungssequenz automatisch in a,b,c und verwenden Sie dann den definierten kombinierten Index 🎜🎜<img src="https://img.php.cn/upload/image/606/915/328/163593860143734Erhalten%20Sie%20ein%20umfassendes%20Verst%C3%A4ndnis%20der%20kombinierten%20Indizes%20in%20MySQL%20und%20sehen%20Sie%20die%20Unterschiede%20zu%20einspaltigen%20Indizes" title="163593860143734Erhalten Sie ein umfassendes Verständnis der kombinierten Indizes in MySQL und sehen Sie die Unterschiede zu einspaltigen Indizes" alt="Erhalten Sie ein umfassendes Verständnis der kombinierten Indizes in MySQL und sehen Sie die Unterschiede zu einspaltigen Indizes">🎜🎜Die Abfragebedingung im obigen Bild ist <code>b,a. Ebenso passt MySQL die Bedingungsreihenfolge an a,b und verwendet dann den kombinierten Index 🎜🎜<img src="https://img.php.cn/upload/image/149/823/571/1635938629900948.png" title="1635938629900948.png" alt="Erhalten Sie ein umfassendes Verständnis der kombinierten Indizes in MySQL und sehen Sie die Unterschiede zu einspaltigen Indizes">🎜🎜Up Die Abfragebedingung des Diagramms ist <code>b,c, da a offensichtlich nicht als Bedingungsspalte verwendet wird Verwenden Sie den kombinierten Index🎜

🎜Unterschiede zum einspaltigen Index🎜🎜🎜Die Reihenfolge der Spalten in einem gemeinsamen Index ist nach dem Linksprinzip sehr wichtig. 🎜🎜Einzelne Indizes funktionieren einzeln, das heißt, es gibt drei einzelne Indizes, je nachdem, welche Bedingungsabfrage zuerst funktioniert, und die anderen funktionieren nicht. 🎜

🎜Kombinierte Indexnutzungsszenarien🎜🎜
    🎜🎜wo Bedingungen häufig angezeigt werden und die Anzahl der aktuellen Tabellen angezeigt wird groß verglichen werden. 🎜🎜🎜🎜where Bei Verwendung von and anstelle von or in der Bedingung. 🎜🎜🎜🎜Ein gemeinsamer Index ist besser geeignet als ein einzelner Index, da der Index eine bestimmte Menge an Speicherplatz belegt, was bedeutet, dass ein gewisser Overhead entsteht. Wenn mehr als ein einzelner Index vorhanden ist, entsteht viel Verschwendung Der gemeinsame Index entspricht mehreren. Erstellen Sie einen Index für jede Spalte und erstellen Sie ihn nur einmal, was unter der Bedingung und sehr gut geeignet ist. 🎜🎜🎜🎜Weitere Programmierkenntnisse finden Sie unter: 🎜Programmiervideo🎜! ! 🎜

Das obige ist der detaillierte Inhalt vonErhalten Sie ein umfassendes Verständnis der kombinierten Indizes in MySQL und sehen Sie die Unterschiede zu einspaltigen Indizes. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:juejin.cn
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage