В этом примере я пытаюсь получить дату и время продукта 1-го заказа от каждого клиента.
Мой запрос выглядит так:
select * from(
select customerid,
orderdatetime,
productname,
row_number() over (partition by customerid order by orderdatetime) rn
from t
) where rn=1
В таблице t
, customerid
+ orderdatetime
может служить первичным ключом, в то время как productname
- символы свободного текста.Клиентов огромное количество, и каждый заказчик сделал значительное количество заказов.
Мне кажется, что в этом запросе большая часть затрат тратится на order by
, потому что я хочу только самый ранний (минимум).Есть ли на самом деле такие отходы?Есть ли альтернативный способ получить результат, который быстрее?
Я использую Amazon Redshift.