Мне просто интересно, если следующие два оператора SQL имеют какие-либо различия в производительности или они по сути одинаковы:
Чтобы выбрать последнюю запись супруга / супруги из таблицы spouse
(person_id, spouse_id, замужем_дата).
select *
from spouse
where (person_id, marriage_date) in ( select person_id, max(marriage_date)
from spouse
group by person_id
)
select *
from spouse s1
where marriage_date = ( select max(marriage_date)
from spouse s2
where s1.person_id = s2.person_id
)
Это распространенное требование к отчетности, например, о последней работе сотрудника, высшем образовании и т. Д. И т. Д. Я хотел бы знать, предпочитаете ли вы вышеуказанные утверждения одному из них и почему, или, если есть другие, лучше способ (с точки зрения производительности / читабельности) для выполнения этих требований «самый последний / максимальный».