我正在为 Oracle 使用 TOAD。当我实现一些 sql 查询时,我遇到了这些问题:
我正在使用几张桌子,每张桌子都有大约。选择查询的 10M 行。2 个表有超过 70M 行数据。
假设我有;
一个 TRANSACTION 表(主键:SQ_TRANSACTION_ID)
一个 TRANSACTION_DETAIL 表(外键:RF_TRANSACTION_ID、RF_PRODUCT_ID)
产品表(主键:SQ_PRODUCT_ID)
我的选择查询是这样的;
SELECT TR.TRANSACTION_ID,
SUM(CASE WHEN PR.CD_PRODCUT_TYPE = 'A'
THEN TRD.CS_INVOICE_PRICE ELSE 0 END) A_PRODUCT_TOTAL,
SUM(CASE WHEN PR.CD_PRODCUT_TYPE <> 'A'
THEN TRD.CS_INVOICE_PRICE ELSE 0 END) B_PRODUCT_TOTAL
FROM TRANSACTION TR,
TRANSACTION_DETAIL TRD,
PRODUCT PR
WHERE TR.SQ_TRANSACTION_ID = TRD.RF_TRANSACTION_ID
AND TRD.RF_PRODUCT_ID = PR.SQ_PRODUCT_ID
GROUP BY TR.TRANSACTION_ID,
CASE WHEN PR.CD_PRODCUT_TYPE = 'A' THEN TRD.CS_INVOICE_PRICE ELSE 0 END,
CASE WHEN PR.CD_PRODCUT_TYPE <> 'A' THEN TRD.CS_INVOICE_PRICE ELSE 0 END
有没有办法通过使用它们的外键/主键将这个查询分成两个或多个相互引用的部分?我的意思是分成两部分,第一部分获取 A_PRODUCT_TOTAL,第二部分获取 B_PRODUCT_TOTAL。每个部分的事务 id 应与结果数据匹配。