У меня есть два разных запроса, которые дают одинаковые результаты. Интересно, какой из них более эффективен? Во-вторых, я использую на один пункт select меньше, но я перемещаю , где , к выбору. Какой из них выполняется первым? Предложение left join или предложение where ?
Использование 3 «select»:
select * from
(
select * from
(
select
max(t.PRICE_DATETIME) over (partition by t.PRODUCT_ID) as LATEST_SNAPSHOT,
t.*
from
PRICE_TABLE t
) a
where
a.PRICE_DATETIME = a.LATEST_SNAPSHOT;
) r
left join
PRODUCT_TABLE l on (r.PRODUCT_ID = l.PRODUCT_ID and r.PRICE_DATETIME = l.PRICE_DATETIME)
Используя 2 выбора:
select * from
(
select
max(t.PRICE_DATETIME) over (partition by t.PRODUCT_ID) as LATEST_SNAPSHOT,
t.*
from
PRICE_TABLE t
) r
left join
PRODUCT_TABLE l on (r.PRODUCT_ID = l.PRODUCT_ID and r.PRICE_DATETIME = l.PRICE_DATETIME)
where
r.PRICE_DATETIME = r.LATEST_SNAPSHOT;
ps: я знаю, я знаю, "выберите звезду" - это зло, но я пишу это так только здесь, чтобы уменьшить его.