Политика безопасности строк и разделов в PostgreSQL

В таблице PostgreSQL 10.6 включена политика безопасности строк, например id, Таблица имеет несколько разделов на основе id,

Перед выполнением запроса выбора значение для поля было установлено с помощью SET заявление.

Но когда выполняется запрос на выборку, из плана объяснения я вижу, что PostgreSQL должен сканировать все разделы, чтобы найти правильный раздел, соответствующий значению, установленному с помощью SET заявление.

Тогда как если id был передан в WHERE пункт, он выбрал правильный раздел, не просматривая их все.

Есть ли способ заставить политику безопасности строк выбрать правильный раздел, аналогичный предложению where?

1 ответ

Если ваша политика зависит от устанавливаемого параметра, вы, вероятно, используете current_setting() чтобы получить это.

Поскольку значение не известно при анализе запроса, PostgreSQL v10 не может применить отсечение разделов.

В зависимости от вашего запроса может помочь обновление до версии v11, поскольку в эту версию добавлена ​​поддержка сокращения разделов во время выполнения запроса.

Другие вопросы по тегам