1. Warum Index verwenden:
Der Index im Datenbankobjekt ähnelt tatsächlich dem Inhaltsverzeichnis des Buches, hauptsächlich um die Geschwindigkeit beim Abrufen von Daten aus der Tabelle zu verbessern. Da die Daten in einer Datenbanktabelle gespeichert werden, wird der Index für das Datenbanktabellenobjekt erstellt und besteht aus Schlüsseln, die von einem Feld oder mehreren Feldern in der Tabelle generiert werden. Diese Schlüssel werden in einer Datenstruktur (B-Baum oder Hash-Tabelle) gespeichert. . Mit MySQL können Sie mit Schlüsseln verknüpfte Felder schnell und effizient finden. Je nach Speichertyp des Index kann der Index in B-Tree-Index (BTREE) und Hash-Index (HASH) unterteilt werden. Hinweis: InnoDB- und MyISAM-Speicher-Engines unterstützen Indizes vom Typ BTREE und MEMORY-Speicher-Engines unterstützen Indizes vom Typ HASH. Der erstere Index wird standardmäßig verwendet.
MySQL unterstützt 6 Arten von Indizes, nämlich gewöhnliche Indizes, eindeutige Indizes, Volltextindizes, einspaltige Indizes, mehrspaltige Indizes und räumliche Indizes.
Für die Indexerstellung eignen sich folgende Situationen:
1. Felder, die häufig abgefragt werden. Das sind die Felder, die in der WHERE-Klausel erscheinen.
2. Die Felder in der Gruppe, also die Felder, die in der GROUP BY-Klausel erscheinen.
3. Gemeinsame Abfrage zwischen der untergeordneten Tabelle und der übergeordneten Tabelle, bei der eine Abhängigkeitsbeziehung besteht, dh das Primärschlüssel- oder Fremdschlüsselfeld.
4. Legen Sie ein eindeutiges vollständiges Einschränkungsfeld fest.
2. Index erstellen und anzeigen:
Zu den Indexvorgängen gehören das Erstellen von Indizes, das Anzeigen von Indizes und das Löschen von Indizes. Die sogenannte Indexerstellung besteht darin, einen Index für ein oder mehrere Felder der Tabelle zu erstellen. In MySQL gibt es normalerweise drei Möglichkeiten, einen Index zu erstellen, wenn Sie eine Tabelle erstellen. und übergeben Sie die SQL-Anweisung ALTER, um einen Index zu erstellen.
2.1 Erstellen und Anzeigen eines normalen Index:
Der sogenannte gewöhnliche Index bedeutet, dass beim Erstellen des Index keine Einschränkungen (eindeutig, nicht leer usw.) angebracht sind. Dieser Indextyp kann für jeden Feldtyp erstellt werden.
2.1.1 Erstellen Sie beim Erstellen einer Tabelle einen normalen Index:
Das Syntaxformat ist wie folgt:
CREATE TABLE table_name( 属性名 数据类型, 属性名 数据类型, ...... 属性名 数据类型, INDEX|KEY [索引名] (属性名1 [(长度)] [ASC|DESC]) );
Beschreibung: Der Parameter INDEX oder KEY wird verwendet, um das Feld als Index anzugeben, der Parameter „Indexname“ wird verwendet, um den Namen des erstellten Indexes anzugeben, der Parameter „Attributname 1“ wird verwendet, um den Namen anzugeben des mit dem Index verknüpften Felds, „Länge“. Der Parameter wird verwendet, um die Länge des Index anzugeben, und der Parameter „ASC|DESC“ wird verwendet, um die aufsteigende oder absteigende Reihenfolge anzugeben.
Hinweis: Beim Erstellen eines Indexes können Sie die Länge des Indexes angeben. Dies liegt daran, dass unterschiedliche Speicher-Engines die maximale Anzahl von Indizes und die maximale Indexlänge für eine Tabelle definieren. Die von MySQL unterstützte Speicher-Engine unterstützt mindestens 16 Indizes für jede Tabelle und die Gesamtindexlänge beträgt mindestens 256 Byte.
Beispiel:
CREATE TABLE t_dept( deptno INT, dname VARCHAR(30), loc VARCHAR(40), INDEX index_deptno (deptno) );
Beschreibung:
Sie können überprüfen, ob der Index erfolgreich erstellt wurde, indem Sie SHOW CREATE TABLE t_dept G;
Mit EXPLAIN SELECT * FROM t_dept WHERE deptno=1G; können Sie überprüfen, ob der Index in der Datenbanktabelle verwendet wird. Wenn die Werte in den Feldern „possible_keys“ und „key“ im Ausführungsergebnis beide dem erstellten Indexnamen „index_deptno“ entsprechen, bedeutet dies, dass der Index bereits vorhanden ist und aktiviert wurde.
Erreicht durch die SQL-Anweisung CREATE INDEX, die Syntax lautet:
INDEX-Indexnamen erstellen
ON-Tabellenname (Attributname [(Länge)] [ADC|DESC])
Die grammatikalische Form ist:
ALTER TABLE Tabellenname ADD INDEX|KEY Indexname (Attributname [(Länge)] [ASC|DESC]);
2.2 Eindeutigen Index erstellen und anzeigen:
Der sogenannte eindeutige Index bedeutet, dass beim Erstellen eines Index der Wert des eingeschränkten Index eindeutig sein muss. Mit dieser Art von Index können Sie einen Datensatz schneller abfragen. In MySQL kann es je nach Art der Indexerstellung in zwei Typen unterteilt werden: automatische Indizierung und manuelle Indizierung.
Die sogenannte automatische Indizierung bedeutet, dass, wenn Integritätseinschränkungen in einer Datenbanktabelle festgelegt werden, die Tabelle automatisch vom System indiziert wird. Der sogenannte manuelle Index bezieht sich auf die manuelle Erstellung eines Index für die Tabelle. Wenn ein Feld in einer Tabelle als Primärschlüssel oder als eindeutige Integritätsbeschränkung festgelegt ist, erstellt das System automatisch einen eindeutigen Index, der dem Feld zugeordnet ist.
Die grammatikalische Form ist:
CREATE TABLE table_name( 属性名 数据类型, 属性名 数据类型, ...... 属性名 数据类型, UNIQUE INDEX|KEY [索引名] (属性名1 [(长度)] [ASC | DESC]) );
2.2.2 Erstellen Sie einen eindeutigen Index für eine vorhandene Tabelle:
Erreicht durch die SQL-Anweisung CREATE UNIQUE INDEX, die Syntaxform ist:
EINZIGARTIGEN INDEX-Indexnamen ERSTELLEN
ON-Tabellenname (Attributname [(Länge)] [ASC|DESC]);
Die grammatikalische Form ist:
ALTER TABLE Tabellenname ADD UNIQUE INDEX|KEY Indexname (Attributname [(Länge)] [ASC|DESC]);
2.3 创建和查看全文索引:
全文索引主要关联在数据类型为CHAR、VARCHAR和TEXT的字段上,以便能更加快速的查询数据量较大的字符串类型的字段。MySQL只能在存储引擎为MyISAM的数据库表上创建全文引擎。默认情况下,全文引擎的搜索执行方式为不区分大小写,如果全文引擎所关联的字段为二进制数据类型,则以区分大小写的方式执行。
2.3.1 创建表时创建全文索引:
语法形式为:
CREATE TABLE table_name ( 属性名 数据类型, 属性名 数据类型, ...... 属性名 数据类型, FULLTEXT INDEX|KEY [索引名] (属性名1 [(长度)] [ASC|DESC]) );
2.3.2 在已经存在的表上创建全文索引:
语法形式为:
CREATE FULLTEXT INDEX 索引名
ON 表名 (属性名 [(长度)] [ASC|DESC]);
2.3.3 通过SQL语句ALTER TABLE 创建全文索引:
语法形式为:
ALTER TABLE table_name
ADD FULLTEXT INDEX|KEY 索引名 (属性名 [(长度)] [ASC|DESC]);
2.4 创建和查看多列索引:
所谓多列索引,是指在创建索引时,所关联的字段不是一个字段,而是多个字段。虽然可以通过所关联的字段进行查询,但是只有查询条件中使用了所关联字段中的第一个字段,多列索引才会被使用。
2.4.1 创建表时创建多列索引:
语法形式如下:
CREATE TABLE table_name( 属性名 数据类型, 属性名 数据类型, ...... 属性名 数据类型, INDEX|KEY [索引名] (属性名1 [(长度)] [ASC|DESC]), ...... (属性名1 [(长度)] [ASC|DESC]) );
上述语句创建索引时,所关联的字段至少大于一个字段。
2.4.2 在已经存在的表上创建多列索引:
语法形式为:
CREATE INDEX 索引名 ON 表名 ( 属性名 [(长度)] [ASC|DESC], ...... 属性名n [(长度)] [ASC|DESC] );
2.4.3 通过SQL语句ALTRE TABLE 创建多列索引:
语法形式为:
ALTER TABLE table_name ADD INDEX|KEY 索引名(属性名 [(长度)] [ASC|DESC],属性名n [(长度)] [ASC|DESC]);
3. 删除索引:
删除索引的语法形式:
DROP INDEX index_name ON table_name
4. 查看索引:
查看索引的语法形式:
SHOW INDEX FROM table_name
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。