выберите отличную производительность не согласована

#sql #amazon-redshift

#sql #amazon-redshift

Вопрос:

Существует отдельный запрос к одной таблице

 select distinct d, e, f, a, b, c from t where a = 1 and e = 2;
  

Количество различных значений в столбцах a, b, c велико (высокая мощность столбца), а столбцы d, e, f являются столбцами с низкой мощностью. Мои данные находятся в формате ORC в S3, и у меня есть внешняя таблица в Athena и Redshift spectrum, указывающая на один и тот же файл.

При выполнении вышеуказанного запроса в athena он возвращается через пару секунд, тогда как в redshift spectrum это занимает пару минут.

Но когда я перемещаю столбец f в конец списка выбора, он также отлично работает в спектре красного смещения. Это происходит только для этого конкретного столбца, я имею в виду, что перемещение d или e в конце не имеет никакого значения, т. Е. Они выполняются дольше. Столбец f является столбцом varchar, как и другие, и максимальная длина этого столбца составляет 30 байт.

Два вопроса

  • (a) Любая информация или указания на особое поведение, при котором перемещение столбца f в конец списка ускоряет его выполнение, в то время как размещение его между ними замедляет

  • (b) Существует ли рекомендуемая наилучшая практика SQL для перечисления столбцов в порядке убывания мощности столбца в операторах distinct или group by? Имеет ли значение время выполнения, если столбцы меньшей мощности помещаются первыми или если они расположены в смешанном порядке?

Комментарии:

1. Связанные: cybertec-postgresql.com/en/speeding-up-group-by-in-postgresql (это для Postgres, но может применяться и к Redshift)

2. Спасибо, поэтому предлагается сначала поместить отдельные столбцы, что приводит к более быстрым результатам.

3. ведет ли себя «group by» вместо использования distinct одинаково?

Ответ №1:

Обновление вашего драйвера Redshift до последней версии обычно может привести вашу скорость Redshift Spectrum почти в соответствие с Athena.

https://docs.aws.amazon.com/redshift/latest/mgmt/configure-jdbc-connection.html#download-jdbc-driver

Возможно, это не причина в вашем случае использования, но определенно стоит попробовать!

Комментарии:

1. Спасибо, Джон, я использую последнюю версию драйвера, но это не помогает. Проблема возникает даже с локальными таблицами красного смещения, а не только с redshift spectrum.