Базы данных / SQL middle
Два одинарных индекса vs один составной — что лучше?
Ответ
Зависит от запроса. WHERE a=1 AND b=2: составной (a,b) — один Index Scan. Два одинарных: Bitmap Index Scan + Bitmap AND — медленнее. WHERE a=1 OR b=2: два одинарных — Bitmap OR, а составной (a,b) здесь почти бесполезен. Плюс составной работает по префиксу, поэтому порядок колонок важен.
Разбор: Выбор зависит от запроса: для конъюнкции (AND) выигрывает составной индекс с одним Index Scan, а для дизъюнкции (OR) лучше два одинарных через Bitmap OR. Главные ловушки: составной индекс по префиксу работает только для левых колонок (порядок важен), а на OR он практически бесполезен и проигрывает паре одинарных.
Хочешь так же по своей компании — с вопросами по грейдам и задачами? Закажи гайд или забери свежее в Telegram.