Mysql – Query with INNER JOIN takes long time than expected

MySQLperformancequery-performance

I have the following query, which takes longer than expected.
Anybody help me find a faster alternative?

SET SESSION MAX_JOIN_SIZE=18446744073709551615;

SELECT
    claims.claim_id,
    claims.lease_id,
    claims.accident_date,
    claims.insurer_reference,
    claims.status,
    claims.loss,
    claims.responsibility,
    claims.age,
    claims.collected_date,
    motor.make,
    motor.model,
    motor.YOM,
    estimations.workshop,
    estimations.labour_charges AS EstLabour,
    estimations.spare_parts AS EstSpares,
    estimations.lump_sum AS EstLsum,
    estimations.towing_charges AS EstTowing,
    estimations.total AS EstTotal,
    MIN(approvalspl.approval_date) AS PLAppDate,
    SUM(approvalspl.labour_charges) AS PLAppLabour,
    SUM(approvalspl.spare_parts) AS PLAppSpares,
    SUM(approvalspl.lump_sum) AS PLAppLsum,
    SUM(approvalspl.total_amount) AS PLAppTotal,
    approvalstl.approval_date AS TLAppDate,
    SUM(approvalspl.towing_charges) AS PLAppTowing,
    approvalstl.sum_insured AS sum_insured,
    approvalstl.total_amount AS TLAppTotal,
    approvalspl.estimation_id,
    SUM(approvalspl.deductible) AS PLDeductible,
    approvalstl.deductible AS TLDeductible,
    approvalstl.towing_charges AS TLAppTowing,
    claims.reason,
    motor.SI,
    policies.policy_key,
    claims.city,
    claimsnotes.notes,
    motor.chasis_number,
    claims.tp_payment,
    claims.tp_recovery
FROM claims
LEFT OUTER JOIN motor ON claims.lease_id = motor.lease_id
LEFT OUTER JOIN estimations ON claims.claim_id = estimations.claim_id
LEFT OUTER JOIN approvalspl ON estimations.estimations_id = approvalspl.estimation_id
LEFT OUTER JOIN approvalstl ON estimations.estimations_id = approvalstl.estimation_id
INNER JOIN policies ON motor.policy_id = policies.policy_id
LEFT OUTER JOIN claimsnotes ON claims.claim_id = claimsnotes.claim_id
GROUP BY claims.claim_id

Best Answer

Try adding all columns that are not in a MIN, MAX or SUM to the GROUP BY