如何将4条SQL查询合并为单条高性能查询?
多SQL合并实现方案
核心逻辑
四张业务表通过公共关联键CD_PURCHASE(采购单编码)做内连接,把所有过滤条件整合到同一条查询语句中,单次调用即可返回符合所有规则的结果。
合并后的最终SQL
SELECT t4.CD_PURCHASE, t4.CD_PRODUCT, t4.ID_CUSTOMER, t4.DT_LAST_PURCHASE FROM TB_PURCHASE_STORE t1 INNER JOIN TB_PURCHASE t2 ON t1.CD_PURCHASE = t2.CD_PURCHASE INNER JOIN TB_PURCHASE_PRODUCT t3 ON t2.CD_PURCHASE = t3.CD_PURCHASE INNER JOIN TB_PURCHASE_SALES t4 ON t3.CD_PURCHASE = t4.CD_PURCHASE AND t3.CD_PRODUCT = t4.CD_PRODUCT WHERE -- 分支、门店筛选条件 t1.CD_BRANCH = ? AND t1.CD_STORE = ? -- 促销周期校验 AND SYSDATE BETWEEN TO_DATE(t2.DT_BEGIN_PROMOTION) AND TO_DATE(t2.DT_END_PROMOTION) -- 商品生效状态校验 AND t3.FL_ACTIVE = 1 -- 客户ID筛选条件 AND t4.ID_CUSTOMER = ?
说明
- 语句共需要传入3个参数,顺序为:
分支编码、门店编码、客户ID - 以上用的是内连接,只会返回同时满足所有筛选条件的记录。如果业务需要保留符合前序条件、但没有对应销售记录的采购单/商品,可以根据场景把对应
INNER JOIN调整为LEFT JOIN - 可以根据业务需要,在SELECT部分补充返回促销周期、门店信息等其他表的字段。
内容的提问来源于stack exchange,提问作者Liam Park
相关产品推荐
相关产品推荐

