Перейти к содержанию

Фасет BUCKETS

Этот фасет может быть использован для просмотра бакетов, которым соответствует запрошенная порция данных. Например, в SELECT на вычисление бакетов влияют условия WHERE, а в INSERT сами вставляемые данные определяют бакеты.

Возможными значения вывода фасета BUCKETS являются:

  • any — запрос может быть выполнен на любом узле.
  • множество = [...] — для запроса удалось рассчитать точные бакеты, на которых он будет исполняться.
  • множество <= [...] — означает, что запрос может быть исполнен на подмножестве указанных бакетов. Иными словами, выведенные бакеты представляют собой верхнюю границу множества бакетов, использующихся при исполнении запроса.

Примеры

Подготовка тестового окружения

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

Ниже представлены примеры запросов для каждого возможного значения.

any

EXPLAIN (BUCKETS) SELECT name, id FROM _pico_table;
buckets = any

Из вывода следует, что запрос может исполниться на любом узле, в том числе и локально.

Множество = [...]

EXPLAIN (BUCKETS) SELECT * FROM foo WHERE id in (42, 88, 99);
buckets = [388,587,2426]

Планировщик смог точно вычислить бакеты, на которых лежат необходимые данные.

Множество <= [...]

EXPLAIN (BUCKETS) SELECT * FROM warehouse;
buckets <= [1-3000]

Вывод фасета BUCKETS является верхней границей множества бакетов, на которых исполняется запрос.