(first_name, last_name, city)
А затем выполнили запрос:
SELECT *
FROM users
WHERE last_name = 'Smith';
Результат? База данных проигнорировала index и выполнила Sequential Scan.
Почему? Разве index не должен использоваться, ведь
last_name входит в него?А что изменится для следующих условий?
WHERE first_name = ?
WHERE first_name = ? AND last_name = ?
WHERE first_name = ? AND city = ?
Понимание порядка столбцов в composite indexes — одна из важнейших тем SQL performance optimization, которую стоит знать каждому backend-разработчику.
👉 @BackendPortal
