У нас есть отборное заявление в производстве, которое занимает довольно много времени.
Текущий запрос использует номер строки - оконную функцию.
Я пытаюсь переписать запрос и проверить то же самое. моё предположение, что если предположить, что его совокупные значения выборки из таблицы orc вместо номера строки могут помочь сократить время выполнения,
Возможно ли что-то подобное. Дайте мне знать, если я что-то упустил.
Извините, я пытаюсь учиться, поэтому, пожалуйста, потерпите мои ошибки, если они есть.
Я попытался переписать запрос, как указано ниже.
Оригинальный запрос
SELECT
Q.id,
Q.crt_ts,
Q.upd_ts,
Q.exp_ts,
Q.biz_effdt
(
SELECT u.id, u.crt_ts, u.upd_ts, u.exp_ts, u.biz_effdt, ROW_NUMBER() OVER (PARTITION BY u.id ORDER BY u.crt_ts DESC) AS ROW_N
FROM ( SELECT cust_prd.id, cust_prd.crt_ts, cust_prd.upd_ts, cust_prd.exp_ts, cust_prd.biz_effdt FROM MSTR_CORE.cust_prd
WHERE biz_effdt IN ( SELECT MAX(cust_prd.biz_effdt) FROM MSTR_CORE.cust_prd )
) U
)Q WHERE Q.row_n = 1
Моя попытка:
SELECT cust_prd.id, cust_prd.crt_ts, cust_prd.upd_ts, cust_prd.exp_ts, cust_prd.biz_effdt FROM MSTR_CORE.cust_prd
WHERE biz_effdt IN ( SELECT MAX(cust_prd.biz_effdt) FROM MSTR_CORE.cust_prd )
having cust_prd.crt_ts = max (cust_prd.crt_ts)