19
Планировщик запросов
Удаление замкнутых соединений из планов
enable_self_join_removal
Оптимизированы планы с пустыми узлами Materialize
Уточнение стоимости последовательного сканирования
seq_scan_startup_cost_first_row = off
Уточнение селективности соединений по нескольким
условиям при наличии расширенной статистики
enable_compound_index_stats = on
Уменьшено потребление памяти планировщиком
в запросах с большими массивами
Добавлена возможность удаления замкнутых соединений из планов
запросов, что может увеличить скорость выполнения (параметр
enable_self_join_removal). Полезно для систем с автоматически
генерируемыми запросами.
Улучшена производительность в случаях, когда в плане возникает
много пустых узлов Materialize, которые ничего не возвращают.
Параметр seq_scan_startup_cost_first_row увеличивает начальную
стоимость последовательного сканирования. В обычном PostgreSQL
эта величина всегда равную нулю, за счет чего планировщик может
иногда предпочесть последовательное сканирование доступу по
индексу для получения одной строки по первичному ключу.
При включенном параметре enable_compound_index_stats оптимизатор
использует составные индексы для уточнения оценки селективности
соединения по нескольким атрибутам, не составляющим внешний ключ
(в PostgreSQL в этом случае перемножаются селективности по
отдельным колонкам).
Добавлена оптимизация, которая уменьшает потребление памяти
планировщиком на запросах, содержащих большие массивы
(например, IN для проверки вхождения значения в массив).