у меня есть стол
работник
emp_id, ~10 other fields
a1
b1
emp_type
emp_id, effective_date, employee_type
a1 2/1/2011 RS
a1 9/3/2011 TU
b1 3/2/2011 RS
Я делаю что-то вроде этого:
select emp_id, ~10 other fields, employee_type
from employee e
inner join emp_type et
on et.emp_id = e.emp_id
and effective_date = (select max(effective_date)
from emp_type et2
where et2.emp_id = et.emp_id)
Это самый эффективный способ сделать это? Он не работает слишком медленно, но это очень распространенный запрос в отчетах, и я хочу использовать наиболее эффективный метод. Тип emp_type имеет не более 4-5 записей на сотрудника, но обычно только одну. Есть около 20 000 сотрудников. Я видел решение для перекрестного применения, но обнаружил, что оно медленнее.