В отдельной таблице есть отдельный запрос
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, указывающая на один и тот же файл.
Когда указанный выше запрос выполняется в Афине, он возвращается через пару секунд, тогда как в спектре красного смещения это занимает пару минут.
Но когда я перемещаю col f в конец списка выбора, он отлично работает и в спектре Redshift. Это происходит только для этого конкретного столбца, я имею в виду перемещение d или e в конце не имеет никакого значения, то есть они работают дольше. Col f - это столбец varchar, как и другие, и максимальная длина этого столбца составляет 30 байтов.
Два вопроса
(a) Любое понимание или указатели на своеобразное поведение, когда перемещение col f в конец списка ускоряет его выполнение, тогда как его размещение между ними замедляет
(b) Существует ли рекомендуемая практика SQL для составления списка столбцов в порядке убывания количества элементов в отдельных операторах или в группах по операторам? Имеет ли значение время выполнения, если столбцы с более низкой кардинальностью ставятся первыми или если они расположены в смешанном порядке?