(first_name, last_name, city)
Затем выполнили запрос:
SELECT *
FROM users
WHERE last_name = 'Smith';
Результат?
База данных проигнорировала индекс и выполнила Sequential Scan (полное последовательное сканирование таблицы).
Почему? 🤔
Разве индекс не должен использоваться, если
last_name является его частью?Что изменится, если запросы будут такими:
WHERE first_name = ?
WHERE first_name = ? AND last_name = ?
WHERE first_name = ? AND city = ?
Понимание порядка полей в составных индексах — одна из самых важных оптимизаций производительности SQL, которую должен знать каждый backend-разработчик.
👉 Java Portal
