Ответ
Индекс — это вспомогательная структура данных (чаще всего B-дерево), которая ускоряет операции поиска (WHERE), соединения (JOIN) и сортировки (ORDER BY) за счет предварительно упорядоченного представления данных по определенным столбцам.
Принцип работы: Представьте книгу без оглавления: чтобы найти главу, нужно просмотреть все страницы. Индекс — это и есть оглавление, позволяющее СУБД быстро найти адрес нужных данных.
Основные типы индексов:
- Кластерный индекс (Clustered): Определяет физический порядок хранения строк в таблице. Таблица может иметь только один кластерный индекс (часто это первичный ключ
PRIMARY KEY). Данные в таблице отсортированы по значениям этого индекса. - Некластерный индекс (Non-clustered): Это отдельная структура, которая хранит ключи индекса и указатели на соответствующие строки в таблице. На одной таблице можно создать множество некластерных индексов.
Пример создания в SQL:
-- Создание некластерного индекса по столбцу Email
CREATE INDEX IX_Users_Email ON Users(Email);
-- Создание уникального некластерного индекса
CREATE UNIQUE INDEX IX_Users_Username ON Users(Username);
-- Составной индекс (по нескольким столбцам)
CREATE INDEX IX_Orders_Status_Created ON Orders(Status, CreatedDate);
| Преимущества и недостатки: | Преимущества | Недостатки |
|---|---|---|
Резкое ускорение операций чтения (SELECT). |
Замедление операций записи (INSERT, UPDATE, DELETE), так как индексы необходимо перестраивать. |
|
Обеспечение уникальности данных (UNIQUE). |
Дополнительное потребление дискового пространства. | |
| Ускорение сортировки и группировки. | Неправильный выбор индексов может ухудшить производительность. |
Правила применения:
- Индексируйте столбцы, часто используемые в условиях
WHERE,JOINиORDER BY. - Для составных индексов важен порядок столбцов. Первым должен идти столбец с наибольшей селективностью.
- Избегайте индексации часто изменяемых столбцов или столбцов с малым количеством уникальных значений (низкая селективность).
Видео-ответы
▶
▶
▶
▶
▶
▶
▶
▶
▶
▶
▶
▶
▶
▶
▶
▶
▶
▶
▶
▶
▶
▶
▶
▶