Работа над извлечением отчета и сложным запросом занимает 3 часа. Нужны предложения по настройке
, есть главная таблица, которая содержит записи 3M, и итерация занимает много времени из-за нескольких объединений
Таблицы:
- Сотрудник
- Отдел
- Адрес
- Paystubs
- Налог
Таблица сотрудников имеет 3M записей, и при выполнении следующего запроса она принимаетоколо 3 часов, чтобы получить данные. Нужно получать данные о тех сотрудниках в одиночку, когда их данные изменились со вчерашнего дня на сегодняшний день
select
emp.employee_id || '|' || emp.int_acct_id || '|' || dpt.department_desc
|| '|' || dpt.start_date || '|' || dpt.end_date
|| '|' || dpt.productivity_percent || '|' || addr.street_addr
|| '|' || addr.apt || '|' || addr.city || '|' || addr.state
|| '|' || addr.country || '|' || addr.zip || '|' || pay_for_year
|| '|' || total_paid || '|' || pay_for_current_year || '|' || w2_issue_flg
from employee emp
inner join (
select int_acct_id from (
select int_acct_id from employee
where last_updated_time between '03-nov-19' and '04-nov-19'
union
select int_acct_id from department
where last_updated_time between '03-nov-19' and '04-nov-19'
) dual
) a1 on emp.int_acct_id = a1.int_acct_id
left outer join (
select department_desc, start_date, end_date, int_acct_id,
productivity_percent from department
) dpt on emp.int_acct_id = dpt.int_acct_id
left outer join (
select addr_acct_id, employee_id, street_addr, apt, city, state, country, zip
from address
) addr on emp.employee_id = addr.employee_id
left outer join (
select a.pay_for_year, a.four_not_one as total_paid,
b.total_pay as pay_for_curren_year, a.int_acct_id from tax a, (
select sum(total_pay) as total_pay, int_acct_id
from paystubs where pay_year = (select cur_year from year_dat)
group by int_acct_id
) b
where a.int_acct_id = b.int_acct_id(+)
) on a.int_acct_id = emp.int_acct_id
Есть ли какой-либо другой способ или метод, который мы могли бы использовать, чтобы сначала отфильтровать измененные записи в метке времени, а затемпроверьте другие значения. (Курсор здесь не вариант для меня) данные должны загружаться из базы данных Oracle на сервер AIX, и, следовательно, это требует времени. Также подсказки не помогают, я попробовал Leading / заказал оба и не повезло.