【发布时间】:2025-11-27 10:30:01
【问题描述】:
SELECT DISTINCT ACA.Application_No, AC.FirstName,AC.Id,AC.LastName,AC.MobileNo,CL.leadId
FROM ABSLI_PAYMENT_TRANSACTION APT
内部加入 ABSLI_CUSTOMER_APPLICATION ACA ON ACA.Policy_No=APT.policyId
AC.Id=ACA.CustomerId 内部加入 ABSLI_CUSTOMER AC
左加入 ABSLI_CUSTOMER_LEAD CL ON CL.policyId = ACA.Policy_No
内部加入 ABSLI_Policy_Status_Tracking pst ON pst.policyId = APT.policyId
WHERE APT.paymentStatus='Y'
并且不存在(从 ABSLI_SERVICE_STATUS 中选择 1,其中 PolicyNo=APT.policyId AND NAME = 'APEX_Validate')
AND ACA.Application_No NOT IN (SELECT RT.ApplicationNumber FROM ABSLI_REFUND_TRANSACTION RT WHERE RT.Status != 'Retain')
按 pst.updatedDate DESC 排序;
【问题讨论】:
-
“为什么我的查询很慢”问题应该包括查询计划,如果我们要提供任何有意义的建议
-
ABSLI_REFUND_TRANSACTION.ApplicationNumber列上有索引吗? -
@BarbarosÖzhan 是的。
-
..此外,DISTINCT 跨越多个表,这些表永远无法优化,因为它总是需要一个临时表来处理和可能的排序以获得正确的结果,你可以优化的最好的是 ON , WHERE 和 ORDER BY 子句..
-
请提供
SHOW CREATE TABLE。
标签: mysql sql query-performance