Что такое индекс в базе данных?

«Что такое индекс в базе данных?» — вопрос из категории Базы данных и SQL, который задают на 24% собеседований AQA / Automation. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Индекс в базе данных — это вспомогательная структура данных (чаще всего 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).
    • Составные индексы: Индекс может быть создан по нескольким столбцам. Важно тестировать запросы, которые используют префиксы такого индекса.
  • Типы индексов: Помимо стандартного B-tree, существуют Hash (для точного равенства), GiST/GIN (для полнотекстового поиска и геоданных в PostgreSQL), которые используются под конкретные задачи.

Видео-ответы