从15小时优化到1分钟的SQL

本文深入探讨了SQL查询优化技术,通过对比分析新旧SQL语句,揭示了如何提高数据库查询效率的方法。重点在于理解SQL查询的执行流程、优化策略以及在实际应用中的实践技巧。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

--old.sql  15hours
SELECT * FROM FACULTY_SEARCH_EXPORT_VW VW
            left join table(faculty_salary_log(null)) SAL_LOG_VW 
            on VW.UNVL_ID = SAL_LOG_VW.UNVL_ID 
            left join 
            (
                SELECT  o.salary_total_amt as future_Effect_100_FTE_Salary,
                     o.salary_effective_date as future_effective_from,
                   rec.offer_recipient_unvl_id as future_unvl_id,
                   'recruitment' as future_adjust_type_id,
                   4 as future_adjust_reason_id,
                         o.salary_est_incr_amt as future_adjustment_amt
                FROM offer_salary_cost o 
             INNER JOIN recruitment_offer rec ON o.offer_id=rec.offer_id
                WHERE o.salary_effective_date>current_date
                      AND nvl(o.salary_total_amt, 0) > 0
                UNION ALL
                    --Query for retention promise
                SELECT 
                   o.salary_total_amt as future_Effect_100_FTE_Salary,
                     o.salary_effective_date as future_effective_from,
                   ret.faculty_unvl_id as future_unvl_id,
                   'retention' as future_adjust_type_id,
                   5 as future_adjust_reason_id,
                         o.salary_est_incr_amt as future_adjustment_amt
               FROM offer_salary_cost o 
               INNER JOIN retention_offer ret ON o.offer_id=ret.offer_id
               WHERE o.salary_effective_date>current_date
               AND nvl(o.salary_total_amt, 0) > 0
        ) future
        on vw.unvl_id= future.future_unvl_id
        where 1=1;



--new.sql   1 minutes
SELECT * FROM (SELECT * FROM FACULTY_SEARCH_EXPORT_VW) VW
            left join (SELECT * FROM table(faculty_salary_log(null))) SAL_LOG_VW 
            on VW.UNVL_ID = SAL_LOG_VW.UNVL_ID 
            left join 
            ( SELECT * FROM (
               SELECT  o.salary_total_amt as future_Effect_100_FTE_Salary,
                     o.salary_effective_date as future_effective_from,
                   rec.offer_recipient_unvl_id as future_unvl_id,
                   'recruitment' as future_adjust_type_id,
                   4 as future_adjust_reason_id,
                         o.salary_est_incr_amt as future_adjustment_amt
                FROM offer_salary_cost o 
             INNER JOIN recruitment_offer rec ON o.offer_id=rec.offer_id
                WHERE o.salary_effective_date>current_date
                      AND nvl(o.salary_total_amt, 0) > 0
                UNION ALL
                    --Query for retention promise
                SELECT 
                   o.salary_total_amt as future_Effect_100_FTE_Salary,
                     o.salary_effective_date as future_effective_from,
                   ret.faculty_unvl_id as future_unvl_id,
                   'retention' as future_adjust_type_id,
                   5 as future_adjust_reason_id,
                         o.salary_est_incr_amt as future_adjustment_amt
               FROM offer_salary_cost o 
               INNER JOIN retention_offer ret ON o.offer_id=ret.offer_id
               WHERE o.salary_effective_date>current_date
               AND nvl(o.salary_total_amt, 0) > 0)
        ) future
        on vw.unvl_id= future.future_unvl_id
        where 1=1;



评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值