Он оценивает затраты ввода-вывода + ЦП для нескольких планов-кандидатов, используя табличную статистику (количество строк, распределение значений, избирательность индекса) и выбирает самый дешевый. Устаревшая статистика после больших изменений данных является распространенной реальной причиной того, что ранее быстрый запрос внезапно выбирает плохой план.
Пример
EXPLAIN ANALYZE
SELECT*FROM orders WHERE customer_id =42;
-- QUERY PLAN-- Index Scan using idx_orders_customer_id on orders-- (cost=0.29..8.31 rows=1 width=48) (actual time=0.02..0.03 rows=3 loops=1)-- Index Cond: (customer_id = 42)
Итог
Он оценивает затраты ввода-вывода + ЦП для нескольких планов-кандидатов, используя табличную статистику (количество строк, распределение значений, избирательность индекса) и выбирает самый дешевый.
Что означает, что оптимизатор запросов «ориентирован на затраты» и … · Sobeso