387просмотров
10 февраля 2025 г.
Score: 426
🍉 Принес парочку интересных кейсов поведения оптимизатора Greenplum - GPORCA 1️⃣ Плевать я хотел на тип данных Дано:
1. Таблица партицированная по полю с типом timestamp PARTITION BY RANGE (date) ( START ('2025-01-01'::timestamp) INCLUSIVE END ('2026-01-01'::timestamp) EXCLUSIVE EVERY (INTERVAL '1 day') ) При таком отборе дат, оптимизатор отказывается делать Partition Selector: where date >= date_trunc('month', date) ps: date_trunc('month', date) не меняет тип, он остается timestamp Но вот так, отлично работает 🤷♂️: where date >= date_trunc('month', date)::date 2️⃣ Упс, это вьюха Дано:
1. Вьюха, объединяет через union all несколько таблиц
2. Каждая таблица партицирована по одному и тому же полю, допустим date Partition Selector не работает: where date >= '2025-01-01'::date
and data < '2025-02-01'::date Но вот так, отлично взлетает: where date between '2025-01-01'::date and '2025-02-01'::date При этом, на исходных таблицах оба варианта работают идентично, где логика, GPORCA? #work #case #greenplum