1.使用not in语句查询效率太低,可以使用下面的方式进行优化
优化前:
SELECT sum(a.salary) as nursingCount,b.account_no, FROM ns_order_service_record a
INNER JOIN ptcs_extended.ns_nursing_workers b ON a.nursing_id = b.nursing_id
WHERE a.id not in {
select record_id from ns_wage_service_rel
} and b.shop_id = ? and a.service_end_date <= ? GROUP BY a.nursing_id order by a.service_start_date
优化后:
SELECT sum(a.salary) as nursingCount,b.account_no FROM ns_order_service_record a
INNER JOIN ptcs_extended.ns_nursing_workers b ON a.nursing_id = b.nursing_id
left JOIN ns_wage_service_rel d ON a.id = d.record_id WHERE d.record_id is null and b.shop_id = ? and a.service_end_date <= ? GROUP BY a.nursing_id order by a.service_start_date
优化后下面这句是重点:
left JOIN ns_wage_service_rel d ON a.id = d.record_id WHERE d.record_id is null