Heim > Datenbank > MySQL-Tutorial > Hauptteil

Wie implementiert man das Hinzufügen, Löschen, Ändern und Abfragen des MySQL-Index?

青灯夜游
Freigeben: 2020-10-14 16:45:56
Original
3267 Leute haben es durchsucht

In MySQL können Sie die Anweisung „CREATE INDEX“ verwenden, um den Index anzuzeigen. Verwenden Sie die Anweisung „DROP INDEX“, um den Index zu löschen Erstellen Sie dann nach Bedarf einen Index mit demselben Namen, um den Vorgang zum Ändern des Index zu implementieren.

Wie implementiert man das Hinzufügen, Löschen, Ändern und Abfragen des MySQL-Index?

(Empfohlenes Tutorial: MySQL-Video-Tutorial)

Erstellung eines MySQL-Index

Das Erstellen eines Index bezieht sich auf das Erstellen eines Index für eine oder mehrere Spalten einer Tabelle, was die Leistung verbessern kann der Tabellenzugriffsgeschwindigkeit. Das Erstellen von Indizes ist wichtig für den effizienten Betrieb einer MySQL-Datenbank.

Grundlegende Syntax

MySQL bietet drei Methoden zum Erstellen von Indizes:

1) Verwenden Sie die CREATE INDEX-Anweisung

Sie können die CREATE INDEX-Anweisung speziell zum Erstellen von Indizes verwenden, um einen Index für eine vorhandene Tabelle zu erstellen, aber Diese Anweisung kann keinen Primärschlüssel erstellen.

Syntaxformat:

CREATE <索引名> ON <表名> (<列名> [<长度>] [ ASC | DESC])
Nach dem Login kopieren

Die Syntaxbeschreibung lautet wie folgt:

  • : Geben Sie den Indexnamen an. Für eine Tabelle können mehrere Indizes erstellt werden, aber jeder Index hat einen eindeutigen Namen in der Tabelle.

  • : Geben Sie den Namen der Tabelle an, um einen Index zu erstellen.

  • : Geben Sie den Spaltennamen an, um einen Index zu erstellen. Normalerweise können Sie Spalten, die häufig in der JOIN-Klausel und der WHERE-Klausel in der Abfrageanweisung vorkommen, als Indexspalten verwenden.

  • : Optional. Gibt an, dass die Längenzeichen vor der Spalte zum Erstellen des Index verwendet werden. Das Erstellen eines Index unter Verwendung eines Teils einer Spalte kann dazu beitragen, die Größe der Indexdatei zu reduzieren und den von den Indexspalten belegten Platz zu sparen. In manchen Fällen kann nur das Präfix einer Spalte indiziert werden. Die Länge einer Indexspalte hat eine maximale Grenze von 255 Byte (1000 Byte für MyISAM- und InnoDB-Tabellen). Wenn die Länge einer Indexspalte diese Grenze überschreitet, kann sie nur mit dem Präfix der Spalte indiziert werden. Darüber hinaus müssen auch Spalten vom Typ BLOB oder TEXT Präfixindizes verwenden.

  • ASC|DESC: Optional. ASC gibt an, dass der Index in aufsteigender Reihenfolge sortiert wird, DESC gibt an, dass der Index in absteigender Reihenfolge sortiert wird, und der Standardwert ist ASC.

2) Mit der CREATE TABLE-Anweisung

Indizes können auch beim Erstellen der Tabelle erstellt werden (CREATE TABLE). Fügen Sie der CREATE TABLE-Anweisung die folgenden Anweisungen hinzu. Syntaxformat:

CONSTRAINT PRIMARY KEY [索引类型] (<列名>,…)
Nach dem Login kopieren

Fügen Sie diese Anweisung zur CREATE TABLE-Anweisung hinzu, um anzugeben, dass der Primärschlüssel der Tabelle beim Erstellen einer neuen Tabelle erstellt wird.

Syntaxformat:

KEY | INDEX [<索引名>] [<索引类型>] (<列名>,…)
Nach dem Login kopieren

Fügen Sie diese Anweisung in die CREATE TABLE-Anweisung ein, um beim Erstellen einer neuen Tabelle einen Index für die Tabelle zu erstellen.

Syntaxformat:

UNIQUE [ INDEX | KEY] [<索引名>] [<索引类型>] (<列名>,…)
Nach dem Login kopieren

Fügen Sie diese Anweisung in die CREATE TABLE-Anweisung ein, um beim Erstellen einer neuen Tabelle einen eindeutigen Index für die Tabelle zu erstellen.

Syntaxformat:

FOREIGN KEY <索引名> <列名>
Nach dem Login kopieren

Fügen Sie diese Anweisung in die CREATE TABLE-Anweisung ein, um beim Erstellen einer neuen Tabelle einen Fremdschlüssel für die Tabelle zu erstellen.

Wenn Sie die CREATE TABLE-Anweisung zum Definieren von Spaltenoptionen verwenden, können Sie einen Primärschlüssel erstellen, indem Sie PRIMARY KEY direkt nach einer Spaltendefinition hinzufügen. Wenn der Primärschlüssel ein mehrspaltiger Index ist, der aus mehreren Spalten besteht, kann diese Methode nicht verwendet werden. Sie kann nur durch Hinzufügen einer PRIMARY KRY-Klausel (,...) am Ende der Anweisung implementiert werden. .

3) Verwenden Sie die ALTER TABLE-Anweisung

Die CREATE INDEX-Anweisung kann einen Index für eine vorhandene Tabelle erstellen, und die ALTER TABLE-Anweisung kann auch einen Index für eine vorhandene Tabelle erstellen. Sie können Indizes zu einer vorhandenen Tabelle hinzufügen, während Sie die Tabelle mithilfe der ALTER TABLE-Anweisung ändern. Die spezifische Methode besteht darin, eine oder mehrere der folgenden Syntaxkomponenten zur ALTER TABLE-Anweisung hinzuzufügen.

Syntaxformat:

ADD INDEX [<索引名>] [<索引类型>] (<列名>,…)
Nach dem Login kopieren

Fügen Sie diese Syntaxkomponente in der ALTER TABLE-Anweisung hinzu, um der Tabelle einen Index hinzuzufügen, während Sie die Tabelle ändern.

Syntaxformat:

ADD PRIMARY KEY [<索引类型>] (<列名>,…)
Nach dem Login kopieren

Fügen Sie diese Syntaxkomponente in der ALTER TABLE-Anweisung hinzu, um der Tabelle einen Primärschlüssel hinzuzufügen, während Sie die Tabelle ändern.

Syntaxformat:

ADD UNIQUE [ INDEX | KEY] [<索引名>] [<索引类型>] (<列名>,…)
Nach dem Login kopieren

Fügen Sie diese Syntaxkomponente in der ALTER TABLE-Anweisung hinzu, um der Tabelle einen eindeutigen Index hinzuzufügen, während Sie die Tabelle ändern.

Syntaxformat:

ADD FOREIGN KEY [<索引名>] (<列名>,…)
Nach dem Login kopieren

Fügen Sie diese Syntaxkomponente in der ALTER TABLE-Anweisung hinzu, um der Tabelle einen Fremdschlüssel hinzuzufügen, während Sie die Tabelle ändern.

MySQL-Index anzeigen

Nachdem der Index erstellt wurde, können Sie SQL-Anweisungen verwenden, um den vorhandenen Index anzuzeigen. In MySQL können Sie die SHOW INDEX-Anweisung verwenden, um die für eine Tabelle erstellten Indizes anzuzeigen.

Das Syntaxformat zum Anzeigen des Index lautet wie folgt:

SHOW INDEX FROM <表名> [ FROM <数据库名>]
Nach dem Login kopieren

Die Syntaxbeschreibung lautet wie folgt:

  • : Geben Sie den Namen der Datentabelle an, in der der Index angezeigt werden muss.

  • : Geben Sie die Datenbank an, in der sich die Datentabelle befindet, deren Indizes angezeigt werden müssen. Dies kann weggelassen werden. Beispielsweise bedeutet die Anweisung SHOW INDEX FROM student FROM, den Index der Schülerdatentabelle in der Testdatenbank anzuzeigen.

Beispiel

SQL-Anweisungen und Ausführungsergebnisse werden unten angezeigt.

mysql> SHOW INDEX FROM tb_stu_info2\G
*************************** 1. row ***************************
        Table: tb_stu_info2
   Non_unique: 0
     Key_name: height
 Seq_in_index: 1
  Column_name: height
    Collation: A
  Cardinality: 0
     Sub_part: NULL
       Packed: NULL
         Null: YES
   Index_type: BTREE
      Comment:
Index_comment:
1 row in set (0.03 sec)
Nach dem Login kopieren

Änderung und Löschung des MySQL-Index

删除索引是指将表中已经存在的索引删除掉。不用的索引建议进行删除,因为它们会降低表的更新速度,影响数据库的性能。对于这样的索引,应该将其删除。

在 MySQL 中修改索引可以通过删除原索引,再根据需要创建一个同名的索引,从而实现修改索引的操作。

基本语法

当不再需要索引时,可以使用 DROP INDEX 语句或 ALTER TABLE 语句来对索引进行删除。

1) 使用 DROP INDEX 语句

语法格式:

DROP INDEX <索引名> ON <表名>
Nach dem Login kopieren

语法说明如下:

  • <索引名>:要删除的索引名。

  • <表名>:指定该索引所在的表名。

2) 使用 ALTER TABLE 语句

根据 ALTER TABLE 语句的语法可知,该语句也可以用于删除索引。具体使用方法是将 ALTER TABLE 语句的语法中部分指定为以下子句中的某一项。

  • DROP PRIMARY KEY:表示删除表中的主键。一个表只有一个主键,主键也是一个索引。

  • DROP INDEX index_name:表示删除名称为 index_name 的索引。

  • DROP FOREIGN KEY fk_symbol:表示删除外键。

注意:如果删除的列是索引的组成部分,那么在删除该列时,也会将该列从索引中删除;如果组成索引的所有列都被删除,那么整个索引将被删除。

删除索引

【实例 1】删除表 tb_stu_info 中的索引,输入的 SQL 语句和执行结果如下所示。

mysql> DROP INDEX height
    -> ON tb_stu_info;
Query OK, 0 rows affected (0.27 sec)
Records: 0  Duplicates: 0  Warnings: 0
mysql> SHOW CREATE TABLE tb_stu_info\G
*************************** 1. row ***************************
       Table: tb_stu_info
Create Table: CREATE TABLE `tb_stu_info` (
  `id` int(11) NOT NULL,
  `name` char(45) DEFAULT NULL,
  `dept_id` int(11) DEFAULT NULL,
  `age` int(11) DEFAULT NULL,
  `height` int(11) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=gb2312
1 row in set (0.00 sec)
Nach dem Login kopieren

【实例 2】删除表 tb_stu_info2 中名称为 id 的索引,输入的 SQL 语句和执行结果如下所示。

mysql> ALTER TABLE tb_stu_info2
    -> DROP INDEX height;
Query OK, 0 rows affected (0.13 sec)
Records: 0  Duplicates: 0  Warnings: 0
mysql> SHOW CREATE TABLE tb_stu_info2\G
*************************** 1. row ***************************
       Table: tb_stu_info2
Create Table: CREATE TABLE `tb_stu_info2` (
  `id` int(11) NOT NULL,
  `name` char(45) DEFAULT NULL,
  `dept_id` int(11) DEFAULT NULL,
  `age` int(11) DEFAULT NULL,
  `height` int(11) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=gb2312
1 row in set (0.00 sec)
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonWie implementiert man das Hinzufügen, Löschen, Ändern und Abfragen des MySQL-Index?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.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