Dedu
Dedu

Reputation: 3

optimize the query, my query taking more than 5 minutes to execute

my query taking more than 5 minutes to execute can anyone tell me what's wrong in this query, below is the query I try to optimize it but no luck

SELECT DISTINCT
       'Freight' AS Expr1000,
       'Acknowledged Trip Details' AS detailtype,
       sCompanyDesc,
       VehicleRegistration.sVehicleRegistrationNumber,
       Token.iTokenId,
       sTokenNumber,
       Token.dtTokenGenerating AS TokenDate,
       LoadAssign.sCustomerInvoiceNumber,
       dtCustomerInvoiceDate,
       FillingPoint.sFillingPointName AS [From],
       DecantingPoint.sDecantingPointName AS [To],
       CloseLoad.fExpectedFreightAmount AS fExpectedFreightAmount,
       ISNULL(PayAdvance.fAdvanceAmount, 0) AS fAdvanceAmount,
       CloseLoad.fCommissionAmount AS fCommissionAmount,
       CloseLoad.fDecantedQuantity,
       0 AS [Shortage Quantity],
       0 AS [Shortage Rate],
       0 AS [Shortage Amount],
       sProductName,
       ISNULL((SELECT SUM(ISNULL(JVDetails.fCreditAmount, 0))
               FROM Transactions
                    INNER JOIN JV ON JV.sJVCode = Transactions.sTransactionCode
                    INNER JOIN JVDetails ON JVDetails.iJVId = JV.iJVId
               WHERE CloseLoad.iTokenId = Transactions.iTokenId
                 AND JV.sDescription = 'Munshiana'),
              0) AS Munshiana,
       ISNULL(JV.sJVCode, '') + ISNULL(PV.sPVCode, '') AS advdocnum
FROM CloseLoad
     INNER JOIN Token ON CloseLoad.iTokenId = Token.iTokenId
     INNER JOIN LoadAssign ON CloseLoad.iLoadId = LoadAssign.iLoadId
     INNER JOIN FillingPoint ON Token.iFillingPointId = FillingPoint.iFillingPointId
     INNER JOIN DecantingPoint ON LoadAssign.iDecantingPointId = DecantingPoint.iDecantingPointId
     INNER JOIN Product ON LoadAssign.iProductId = Product.iProductId
     INNER JOIN VehicleRegistration ON Token.iVehicleRegistrationId = VehicleRegistration.iVehicleRegistrationId
     INNER JOIN Company ON Token.iCompanyId = Company.iCompanyId
     LEFT JOIN PayAdvance ON PayAdvance.iTokenId = Token.iTokenId
                         AND PayAdvance.bIsApproved = 1
     LEFT JOIN PV ON PV.iPayAdvanceId = PayAdvance.iPayAdvanceId
                 AND PayAdvance.bIsApproved = 1
                 AND PV.bIsApproved = 1
     LEFT JOIN JV ON JV.iPayAdvanceId = PayAdvance.iPayAdvanceId
                 AND PayAdvance.bIsApproved = 1
                 AND JV.bIsApproved = 1
WHERE CloseLoad.iLoadId NOT IN (SELECT tfrli.iLoadId
                                FROM TempFreightReceiptLoadInfo tfrli
                                     INNER JOIN FreightReceiptChqInfo ci ON ci.iFreightReceiptChqInfoId = tfrli.iFreightReceiptChqInfoId
                                     INNER JOIN LoadAssign l1 ON l1.iLoadId = tfrli.iLoadId
                                WHERE ci.bIsApproved = 1
                                  AND l1.dtCustomerInvoiceDate BETWEEN '8/1/2020' AND '8/30/2020'
                                  AND tfrli.sAllocationType = 'Freight')
  AND LoadAssign.bIsLoadClose = 1
  AND Token.iVehicleRegistrationId = 2644
  AND LoadAssign.dtCustomerInvoiceDate BETWEEN '8/1/2020' AND '8/30/2020'
  AND Token.iCompanyId IN (1, 2, 3)
  AND Token.sDecantingPointType IN ('Domestic', 'Export')
  AND LoadAssign.bIsActive = 1
  AND Token.bIsLoadVerify = 1;

Upvotes: 0

Views: 59

Answers (1)

reta
reta

Reputation: 26

Execute EXPLAIN to find bottleneck.

EXPLAIN SELECT DISTINCT ...

Upvotes: 1

Related Questions