Heim >Datenbank >MySQL-Tutorial >Erweiterte MySQL-Einführung in Indizes (Zusammenfassungsfreigabe)

Erweiterte MySQL-Einführung in Indizes (Zusammenfassungsfreigabe)

WBOY
WBOYnach vorne
2022-11-23 16:51:552057Durchsuche

Dieser Artikel vermittelt Ihnen relevantes Wissen über MySQL, in dem hauptsächlich relevante Inhalte zu Indizes vorgestellt werden, einschließlich der Vor- und Nachteile von Indizes, der Klassifizierung von Indizes, der Indexstruktur und der Indexerstellung usw., wie folgt. Werfen wir einen Blick darauf, ich Ich hoffe, es wird für alle hilfreich sein.

Erweiterte MySQL-Einführung in Indizes (Zusammenfassungsfreigabe)

Empfohlenes Lernen: MySQL-Video-Tutorial

Was ist ein Index?

Offizielle MySQL-Definition von Index: Index (Index) ist eine Datenstruktur, die MySQL dabei hilft, Daten effizient zu erhalten.
Die Essenz des Index: Index ist eine Datenstruktur.
Zweck des Index: Verbesserung der Abfrageeffizienz, vergleichbar mit einem Wörterbuch.

Hinweis:Der Index kann einfach als 注:可以将索引简单的理解为 “排好序的快速查找数据结构”。一般来说索引本身也很大,不可能全部存储在内存中,因此索引往往以索引文件的形式存储的磁盘上

我们平常所说的索引,如果没有特别指明,都是指B树(多路搜索树,并不一定是二叉的)结构组织的索引。其中聚集索引,复合索引,前缀索引,唯一索引默认都是使用B+树索引,统称索引。

索引的优势和劣势

优势

类似大学图书馆建书目索引,提高数据检索的效率,降低数据库的IO成本

通过索引列对数据进行排序,降低数据排序的成本,降低了CPU的消耗

劣势

索引实际上是一张表,该表保存了主键与索引字段,并指向实体表的记录,所以索引列也会占用空间

虽然索引大大提高查询速度,同时却会降低更新表的速度,如对表进行INSERT、UPDATE和DELETE。因为更新表时,MySQL不仅要保存数据,还要保存一下索引文件每次更新添加了索引列的字段,都会调整因为更新所带来的键值变化后的索引信息

索引只是提高效率的一个因素,如果你的MySQL有大数据量的表,就需要花时间研究建立最优秀的索引,或优化查询

MySQL索引分类

单值索引

定义:一个索引只包含单个列,一个表可以有多个单列索引

注:一般一张表最多而言不要超过5个索引

唯一索引

定义:索引列的值必须唯一,但允许有空值

复合索引

定义:一个索引包含多个列

基本语法

  • 创建
CREATE [UNIQUE] INDEX indexName ON mytable(columnnname(length));ALTER mytable ADD [UNIQUE] INDEX [indexName] ON (columnname(length))
  • 删除
 DROP INDEX [indexName] ON mytable;
  • 查看
SHOW INDEX FROM table_name\G
  • 使用ALTER命令

有四种方式添加数据表的索引:

ALTER TABLE tbl_name ADD PRIMARY KEY (column_list):该语句添加一个主键,这意味着索引值必须是唯一的,且不能为NULL。

ALTER TABLE tbl_name ADD UNIQUE index_name(column_list):这条语句创建索引的值必须是唯一的(除了NULL外,NULL可能会出现多次)。

ALTER TABLE tbl_name ADD INDEX index_name(column_list):添加普通索引,索引值可出现多次。

ALTER TABLE tbl_name ADD FULLTEXT index_name(column_list):该语句指定了索引为FULLTEXT,用于全文索引。

注:"sortierte Schnellsuchdatenstruktur" verstanden werden. Im Allgemeinen ist der Index selbst auch sehr groß und es ist unmöglich, ihn vollständig im Speicher zu speichern. Daher wird der Index häufig in Form einer Indexdatei auf der Festplatte gespeichert.
Wie wir normalerweise nennen Index bezieht sich, sofern nicht anders angegeben, auf B. Ein Index, der in einer Baumstruktur (Mehrwege-Suchbaum, nicht unbedingt binär) organisiert ist. Unter diesen verwenden Clustered-Index, zusammengesetzter Index, Präfix-Index und eindeutiger Index standardmäßig alle den B+-Baum-Index, der gemeinsam als Index bezeichnet wird.

Vor- und Nachteile des Index

    Vorteile
  • Ähnlich wie der Aufbau eines bibliografischen Indexes in einer Universitätsbibliothek verbessert es die Effizienz des Datenabrufs und reduziert die IO-Kosten der Datenbank

  • Durch Indexspalten Sortieren Sie Daten, reduzieren Sie die Kosten für die Datensortierung und reduzieren Sie den CPU-Verbrauch die Entitätstabelle, sodass auch Indexspalten Platz beanspruchen

  • Obwohl Indizes die Abfragegeschwindigkeit erheblich erhöhen, verringern sie auch die Geschwindigkeit der Aktualisierung der Tabelle, z. B. INSERT, UPDATE und DELETE in der Tabelle. Denn beim Aktualisieren der Tabelle muss MySQL nicht nur die Daten, sondern auch die Indexdatei speichern. Jedes Mal, wenn ein Feld, das eine Indexspalte hinzufügt, aktualisiert wird, werden die Indexinformationen nach den durch die Aktualisierung verursachten Schlüsselwertänderungen angepasst Verbessern Sie nur die Effizienz. Wenn Ihr MySQL über eine große Menge an Datentabellen verfügt, müssen Sie Zeit mit der Recherche verbringen, um den besten Index zu erstellen oder die Abfrage zu optimieren
  • Einzelwertindex

  • Definition:

    Ein Index enthält nur eine einzelne Spalte und eine Tabelle kann mehrere einspaltige Indizes haben

    Hinweis: Im Allgemeinen sollte eine Tabelle keine haben Höchstens mehr als 5 Indizes Ein Index enthält mehrere Spalten.

Grundlegende Syntax reee

    Verwenden Sie ALTER Befehl

      Es gibt vier Möglichkeiten, Datentabellen hinzuzufügen. Index:
    • ALTER TABLE tbl_name ADD PRIMARY KEY (column_list): Diese Anweisung fügt einen Primärschlüssel hinzu, was bedeutet, dass der Indexwert eindeutig sein muss und nicht NULL sein darf .
    • ALTER TABLE tbl_name ADD UNIQUE index_name(column_list): Der Wert des durch diese Anweisung erstellten Index muss eindeutig sein (außer NULL, NULL kann mehrmals vorkommen).
    • ALTER TABLE tbl_name ADD INDEX index_name(column_list): Fügen Sie einen normalen Index hinzu, der Indexwert kann mehrmals erscheinen.
    • ALTER TABLE tbl_name ADD FULLTEXT index_name(column_list): Diese Anweisung gibt den Index als FULLTEXT für die Volltextindizierung an.
    • Hinweis:[PRIMÄR |. VOLLTEXT]: Der Indextyp, der den eindeutigen Index bzw. den Volltextindex angibt. 🎜Beim Erstellen einer Datentabelle kann der Indextyp weggelassen werden. 🎜🎜 [INDEX |. KEY]: Gibt an, dass in der Datentabelle ein Index erstellt werden soll. 🎜🎜🎜🎜MySQL-Indexstruktur🎜🎜🎜🎜🎜BBaumindex🎜🎜🎜🎜🎜🎜Hash-Index🎜🎜🎜🎜🎜🎜Volltext-Volltext 🎜R-Tree-Index🎜🎜🎜🎜🎜🎜🎜Indiziert Erstellen 🎜🎜🎜In welchen Fällen muss ein Index erstellt werden🎜🎜🎜🎜🎜Der Primärschlüssel erstellt automatisch einen eindeutigen Index🎜🎜🎜🎜Felder, die häufig als Abfragebedingungen verwendet werden, sollten indiziert werden🎜🎜🎜🎜Mit anderen verknüpfte Felder Tabellen in der Abfrage werden Fremdschlüsselbeziehungen indiziert 🎜🎜🎜🎜Häufig aktualisierte Felder eignen sich nicht zum Erstellen von Indizes, da bei jeder Aktualisierung nicht nur der Datensatz, sondern auch der Index aktualisiert wird🎜🎜🎜🎜Felder, die nicht in der Where-Bedingung verwendet werden sind nicht indiziert🎜
    • Einzelschlüssel-/kombinierter Indexauswahlproblem (kombinierte Indizes werden in der Regel bei hoher Parallelität erstellt)

    • Wenn auf das Sortierfeld in der Abfrage über den Index zugegriffen wird, wird die Sortiergeschwindigkeit erheblich verbessert

    • Statistiken in den Abfrage- oder Gruppierungsfeldern

    Welche Situationen eignen sich nicht zum Erstellen von Indizes

    • Zu wenige Tabellendatensätze

    • Tabellen, die häufig hinzugefügt, gelöscht oder geändert werden.

    • Tisch Felder mit wiederholten und gleichmäßig verteilten Daten, daher sollten sie nur für die am häufigsten abgefragten und am häufigsten sortierten Datenspalten verwendet werden.
      Beachten Sie, dass die Indizierung keine großen praktischen Auswirkungen hat, wenn eine Datenspalte viele wiederholte Inhalte enthält.

    Empfohlenes Lernen: MySQL-Video-Tutorial

    Das obige ist der detaillierte Inhalt vonErweiterte MySQL-Einführung in Indizes (Zusammenfassungsfreigabe). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

    Stellungnahme:
    Dieser Artikel ist reproduziert unter:csdn.net. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen