Индексация
Рассмотрим, зачем нужны индексы в базе данных, на примере книжной полки. Книги вы ставите на полку и забираете оттуда, когда хотите что-то прочесть. Так как полка маленькая, вы не задумываетесь о системе классификации книг, а просто ставите их на любые пустые места.
Каждый раз, когда вам нужно найти определённую книгу, вы просматриваете все переплёты с самого начала полки до нужной книги или до конца, если книги не нашлось. К счастью, для одной полки это довольно быстро.
Теперь представьте, что речь идёт не об одной полке, а о помещении библиотеки, где находятся тысячи книг. Тут-то вы и начинаете задумываться о том, что неплохо бы ввести систему классификации, например по названию книги.
Сортировать тысячи книг в алфавитном порядке было бы затруднительно. Поэтому вы составляете таблицу Excel. В каждой строчке вы записываете название книги, в каком стеллаже, на какой полке она стоит. Таким образом, чтобы найти книгу по названию, вам достаточно открыть таблицу, найти нужную строку, а затем подойти к указанному стеллажу.
Конечно, для поддержки такой системы требуется дополнительное время, но всё же это гораздо быстрее, чем искать книгу среди сотен других.
Теперь проведём аналогию с базой данных:
- Помещение — это таблица в БД.
- Таблица Excel — это упрощённый вариант индекса в БД. Индекс — это набор данных, записанных в удобном виде, который позволяет быстрее искать нужные строки.
- Название книги — это ключ в индексе, уникальное значение, которое может ссылаться на одну или несколько записей (например, если книг с одинаковым названием много и они расположены в разных местах). Даже если записей для каждого значения будет несколько, это всё равно быстрее, чем перебирать все данные вручную.
- Поиск книги — это SQL-запросы для получения данных. При этом после добавления индекса сами по себе запросы не меняются. Например, вы всё так же ищите книгу «Основы системного анализа» 😉
Таким образом, индекс — это структура, которая хранит значения одного или нескольких полей таблицы в отсортированном виде со ссылкой на соответствующую запись в основной таблице.
Как обозначается индекс в модели данных
В физической модели данных поля-индексы указываются в описании таблицы. В примере ниже проиндексированы столбцы surname и email.
Когда стоит использовать
При добавлении индексов стоит учитывать объём данных. Индексы ускоряют извлечение данных и выполнение запросов в больших базах. С другой стороны, индексы замедляют вставку и удаление данных, поэтому стоит взвесить плюсы и минусы перед тем, как создавать индексы.