English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Индекс MySQL

Создание индексов в MySQL очень важно для его эффективной работы, индексы могут значительно ускорить процесс поиска в MySQL.

Если бы разумный дизайн и использование индексов в MySQL были бы автомобилем Lamborghini, то MySQL без дизайна и использования индексов был бы велосипедом с人力.

Если бы мы сравнили страницу каталога китайского словаря (индекс) с каталогом,排序 по пinyin, стилю, составным иероглифам и т.д., мы могли бы быстро найти нужное слово.

Индексы делятся на однokolонные индексы и составные индексы. Однokolонный индекс - это индекс, который содержит только одно поле, в таблице может быть несколько однokolонных индексов, но это не составной индекс. Составной индекс - это индекс, который содержит несколько столбцов.

При создании индекса вам нужно убедиться, что этот индекс используется в условиях SQL-запроса (обычно в качестве условия WHERE)

На самом деле, индекс также является таблицей, которая сохраняет основные ключи и поля индекса, и указывает на записи физической таблицы.

Раньше говорили о преимуществах использования индексов, но чрезмерное использование индексов может привести к их滥用. Поэтому у индексов также есть свои недостатки: хотя индексы значительно ускоряют скорость поиска, они также могут замедлить скорость обновления таблицы, например, при выполнении INSERT, UPDATE и DELETE. Porque при обновлении таблицы MySQL не только сохраняет данные, но и сохраняет индексные файлы.

Создание индекса занимает дисковое пространство для файла индекса.

Обычный индекс

Создание индекса

Это最基本的 индекс, у него нет ограничений. Есть несколько способов его создания:

Создание индекса indexName на таблицу table_name (имя_колонки)

Если тип CHAR или VARCHAR, длина может быть меньше фактической длины поля; если тип BLOB или TEXT, необходимо указать length.

Изменение структуры таблицы (добавление индекса)

ALTER table tableName ADD INDEX indexName(columnName)

Прямо指定 при создании таблицы

CREATE TABLE mytable(  
 
ID INT NOT NULL,   
 
username VARCHAR(16) NOT NULL,  
 
INDEX [indexName] (username(length))  
 
);

Синтаксис удаления индекса

DROP INDEX [indexName] ON mytable;

Уникальный индекс

Он подобен предыдущему обычному индексу, но отличается тем, что значения индексного столбца должны быть уникальными, но могут быть пустыми. Если это составной индекс, то комбинация значений столбцов должна быть уникальной. Он может быть создан следующими способами:

Создание индекса

CREATE UNIQUE INDEX indexName ON mytable(username(length))

Изменение структуры таблицы

ALTER table mytable ADD UNIQUE [indexName] (username(length))

Прямо指定 при создании таблицы

CREATE TABLE mytable(  
 
ID INT NOT NULL,   
 
username VARCHAR(16) NOT NULL,  
 
UNIQUE [indexName] (username(length))  
 
);

Добавление и удаление индексов с помощью команды ALTER

Есть четыре способа добавить индекс в таблицу данных:

  • ALTER TABLE tbl_name ADD PRIMARY KEY (column_list): Эта команда добавляет основной ключ, что означает, что значение индекса должно быть уникальным и не может быть NULL.

  • ALTER TABLE tbl_name ADD UNIQUE index_name (column_list): Значение индекса, созданного этой командой, должно быть уникальным (за исключением NULL, которое может встречаться несколько раз).

  • ALTER TABLE tbl_name ADD INDEX index_name (column_list): Добавление обычного индекса, значение индекса может встречаться несколько раз.

  • ALTER TABLE tbl_name ADD FULLTEXT index_name (column_list):Эта команда specifies индекс как FULLTEXT, который используется для полнотекстового индекса.

Ниже приведен пример добавления индекса в таблицу.

mysql> ALTER TABLE testalter_tbl ADD INDEX (c);

Вы также можете использовать предложение DROP в команде ALTER, чтобы удалить индекс. Попробуйте следующий пример для удаления индекса:

mysql> ALTER TABLE testalter_tbl DROP INDEX c;

Добавление и удаление главного ключа с помощью команды ALTER

Основной ключ действует на столбце (может быть один столбец или несколько столбцов, объединенных в составной ключ), при добавлении индекса основного ключа вам нужно убедиться, что по умолчанию он не является пустым (NOT NULL). Пример приведен ниже:

mysql> ALTER TABLE testalter_tbl MODIFY i INT NOT NULL;
mysql> ALTER TABLE testalter_tbl ADD PRIMARY KEY (i);

Вы также можете использовать команду ALTER для удаления главного ключа:

mysql> ALTER TABLE testalter_tbl DROP PRIMARY KEY;

При удалении главного ключа достаточно указать PRIMARY KEY, но при удалении индекса вам необходимо знать имя индекса.

Показывать информацию индекса

Вы можете использовать команду SHOW INDEX, чтобы перечислить相关信息 о связанных индексах таблицы. Добавление \G позволяет форматировать вывод информации.

Попробуйте следующий пример:

mysql> SHOW INDEX FROM table_name; \G
........