Ответ
Индекс в базе данных — это вспомогательная структура данных (чаще всего B-дерево), которая ускоряет операции поиска и сортировки записей в таблице. Его можно сравнить с алфавитным указателем в книге, который позволяет быстро найти нужную страницу, не перелистывая всё подряд.
Пример создания и использования в SQL:
-- Создание индекса по столбцу email в таблице users
CREATE INDEX idx_users_email ON users(email);
-- Запрос, который будет выполняться быстрее благодаря индексу
SELECT * FROM users WHERE email = 'test@example.com';
Что важно знать QA-инженеру:
- Влияние на производительность:
- Плюс: Резко ускоряет
SELECTс условиямиWHERE,JOIN,ORDER BY. - Минус: Замедляет операции
INSERT,UPDATE,DELETE, так как при каждом изменении данных нужно обновлять и индекс. Это важно учитывать при нагрузочном тестировании.
- Плюс: Резко ускоряет
- Тестирование:
- Проверка плана запроса (EXPLAIN): При анализе медленных запросов или при ревью тестов нужно использовать
EXPLAIN(в PostgreSQL) илиEXPLAIN ANALYZE, чтобы убедиться, что запрос использует созданные индексы, а не выполняет полное сканирование таблицы (FULL SCAN). - Составные индексы: Индекс может быть создан по нескольким столбцам. Важно тестировать запросы, которые используют префиксы такого индекса.
- Проверка плана запроса (EXPLAIN): При анализе медленных запросов или при ревью тестов нужно использовать
- Типы индексов: Помимо стандартного B-tree, существуют Hash (для точного равенства), GiST/GIN (для полнотекстового поиска и геоданных в PostgreSQL), которые используются под конкретные задачи.
Видео-ответы
▶
▶
▶
▶
▶
▶
▶
▶
▶
▶
▶
▶
▶
▶
▶
▶
▶
▶
▶
▶
▶
▶
▶
▶
▶
▶
▶
▶