Тип: | enum |
По умолчанию: | partition |
Контекст: | user |
Перезапуск: | false |
Значения: | [partition, on, off] |
Управляет использованием планировщиком ограничений таблицы для оптимизации запросов. Допустимые значения constraint_exclusion
: on
(задействовать ограничения всех таблиц), off
(никогда не задействовать ограничения) и partition
(задействовать ограничения только для дочерних таблиц и подзапросов UNION ALL
). Значение по умолчанию — partition
. Оно часто помогает увеличить производительность, когда применяется наследование.
Когда данный параметр разрешает это для таблицы, планировщик сравнивает условия запроса с ограничениями CHECK
данной таблицы и не сканирует её, если они оказываются несовместимыми. Например: CREATE TABLE parent(key integer, ...);CREATE TABLE child1000(check (key between 1000 and 1999)) INHERITS(parent);CREATE TABLE child2000(check (key between 2000 and 2999)) INHERITS(parent);...SELECT * FROM parent WHERE key = 2400; Если включено исключение по ограничению, команда SELECT не будет сканировать таблицу child1000, в результате чего запрос выполнится быстрее.
В настоящее время исключение по ограничению разрешено по умолчанию только в условиях, возникающих при реализации секционированных таблиц через наследование. Включение этой возможности для всех таблиц влечёт дополнительные издержки на планирование, довольно заметные для простых запросов, но не приносит никакого выигрыша. Если вы не применяете секционированные таблицы с наследованием, лучше всего полностью отключить эту возможность.
За дополнительными сведениями об исключении по ограничению и секционировании таблиц обратитесь к 3.