Как заставить Greenplum 4.2.3 сканировать только нужный раздел?

Когда я использую unnest() в представлении и использую это представление в операторе выбора, Greenplum, похоже, терпит неудачу только в поиске предполагаемого раздела и вместо этого выполняет поиск по всему разделу основной таблицы. То же самое применимо и при использовании подзапроса вместо представления.

Например:

Select something from (select unnest(an_array_field) from table_y) 
where date = 'somedate' and state = 'somestate'

В настоящее время у нас есть 2 разных сервера с 2 разными версиями Greenplum. Сервер A работает на более старой версии (4.2.1), а сервер B работает на 4.2.3. Выполнение того же запроса выше приведет к другому результату. Сервер A (старый) вернет запрос через несколько секунд, а сервер B (новый) вернется навсегда. Запуск объяснения запроса показывает, что сервер A выполняет сканирование только одного из разделов (с датой и состоянием в предложении where), в то время как сервер B выполняет сканирование каждого раздела, что приводит к замедлению.

Структура таблиц для обеих БД одинакова. Выполнение запроса без распаковки не вызовет проблем. Итак, я подозреваю, что что-то делать с новой версией. Могу ли я что-нибудь сделать, чтобы решить эту проблему?


person Sufendy    schedule 11.03.2013    source источник


Ответы (1)


Обновите до более новой версии БД. 4.2.5 — текущая версия. В предстоящем выпуске также будет новый планировщик запросов, который также должен помочь, если обновление до 4.2.5 не поможет.

person Bart K    schedule 22.04.2013
comment
Не могли бы вы сказать, где можно получить эту версию или доступна ли она для ознакомления? Посмотрел на главном портале, но все, что я смог найти, это 4.2.2.4. - person Timka; 10.05.2013
comment
Это новейшая версия Community Edition, которую можно бесплатно загрузить. Для получения более новой версии вам необходимо обратиться к местному представителю Pivotal. - person Bart K; 10.10.2013