Вы видите Index Scan в EXPLAIN и делаете вывод «это точно быстро». Насколько это корректно?

AНекорректно: EXPLAIN показывает оценки планировщика, и при больших выборках Seq Scan бывает быстрее Index Scan
BКорректно: Index Scan опережает Seq Scan при любом объёме выбираемых строк и текущей статистики таблиц
CКорректно при условии, что cost плана меньше, чем у Seq Scan: тогда фактическое время заведомо меньше
DНекорректно лишь для запросов без WHERE, в остальных случаях вывод о скорости делается прямо по виду оператора
Правильный ответ. EXPLAIN без ANALYZE показывает оценки планировщика, а Index Scan не всегда быстрее Seq Scan.

Разбор

Индексы помогают выборочным запросам, но при больших выборках последовательное чтение часто оказывается быстрее. EXPLAIN без ANALYZE не измеряет фактическое время — это модельная оценка стоимости. Поэтому план — это гипотеза о работе запроса, которую нужно проверять на реальных данных, особенно для критичных дашбордов.

Можно заниматься бесплатно

Готовим вопросы…

Три вопроса по теме этой страницы, с объяснениями.

Продолжить в браузере

Ещё вопросы по теме «EXPLAIN и оптимизация»