Добавил:
СПбГУТ * ИКСС * Программная инженерия Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Основное / Письменные лекции по дисциплине «Базы данных».docx
Скачиваний:
89
Добавлен:
29.11.2021
Размер:
713.33 Кб
Скачать

5.3.5. Создание индекса в MySql

Для операции создания индекса MySQL предусматривает такой синтаксис:

CREATE [UNIQUE | FULLTEXT] INDEX <уникальное имя индекса> ON <имя таблицы> (<имя столбца> [(length)],... )

где:

[UNIQUE | FULLTEXT] — определяет, будет ли индекс содержать только уникальные значения (UNIQUE), или в нем будут присутствовать и повторяющиеся значения (FULLTEXT). По умолчанию используется режим FULLTEXT. Length — определяет длину символов поля для индексирования. Если Length оставить пустым, то в индекс попадет поле целиком вне зависимости от длины.

<имя столбца> — уникальный идентификатор индекса. Если это поле не определено, ему будет присвоено имя первого подлежащего индексации столбца.

5.3.6. Типы индексов в MySql

Первичный ключ (PRIMARY KEY) — это основной ключ, который в таблице может быть только один. Он позволяет идентифицировать уникальные записи в таблице. Значения, которые находятся в столбце, где поля имеют PRIMARY KEY, не могут повторяться. Нередко первичный ключ назначают для полей с идентификатором id.

Уникальный ключ (UNIQUE) — по сути, это альтернатива первичному ключу: значения, которые содержатся в таких полях также не могут повторяться и иметь значение NULL.

Составной индекс — позволяет включать в индекс несколько полей, по которым часто происходит выборка. Например, если в условиях часто фигурирует два параметра:

SELECT username FROM users WHERE city = '5' AND age > '18'

При использовании таких запросов составной индекс по полям city и age поможет ускорить выборку данных.

5.3.7. Удаление индекса в MySql

В MySQL удалить индекс можно при помощи такого оператора:

DROP INDEX <Имя индекса> ON <Имя таблицы>

5.3.8. Преимущества использования индексов

  • очень быстрая выборка по первичному ключу;

  • эффективный поиск по интервалу первичного ключа;

  • быстрая сортировка по первичному ключу;

  • покрывающие индексы автоматически используют первичный ключ;

  • быстрая вставка в порядке сортировки первичного ключа.

5.3.9. Недостатки использования индексов

1. За все приходится платить, не исключение и индексы в MySQL. В процессе индексирования MySQL создает дополнительные таблицы, в которых хранятся отсортированные данные. Однако, в большинстве случаев выгоды от быстродействия более ощутимы, чем издержки физической памяти.

2. Запросы на вставку данных в таблицу выполняются чуть дольше, поскольку MySQL требуется создавать новые индексы и реорганизовать данные в предназначенных для этого таблицах. Но поскольку запросы на вставку выполняются реже, чем на извлечение данных, то серьезных потерь это обычно не приносит.

Достоинства от использования индексов значительно перевешивают небольшое количество недостатков. На больших и посещаемых проектах без использования индексов не обойтись.

5.3.10. Практический пример

Индекс создается по правилу:

create index название_индекса

on название_таблицы (название_столбца)

Например, у вас таблица называется test, где хранятся данные по городам России с улицами вида Город, Улица, Дом. Понятно, что строк в таблице при таком раскладе будет много. Если вы часто делаете выборку по определенному городу, например:

select * from test where city = 'Омск'

то, чтобы этот запрос отработал быстрее обычного, следует добавить индекс по вышеуказанному правилу:

create index city_index on test (city)

Тогда тот же самый запрос

select * from test where city = 'Омск'

отработает гораздо быстрее, если столбец city будет проиндексирован.