簡體   English   中英

使用COUNT和LEFT JOIN進行緩慢的MYSQL查詢

[英]Slow MYSQL query using COUNT and LEFT JOIN

我正在使用以下查詢COUNT記錄並在MySQL中顯示記錄。 雖然它可以正常顯示並正常工作,但速度非常慢。 我認為部分原因是因為HTG_ScheduleRequest表非常大。 有沒有更好的方法來安排此查詢以加快速度?

SELECT HTG_TechProps.EmpNumber, 
       HTG_TechProps.EmpFirstName, 
       HTG_TechProps.EmpLastName,  
       HTG_TechProps.Veh_Number,
       COUNT(HTG_ScheduleRequest.ID) AS current_job 
    FROM HTG_TechProps 
        LEFT JOIN HTG_ScheduleRequest 
            ON HTG_TechProps.EmpNumber = HTG_ScheduleRequest.SSR 
                AND (HTG_ScheduleRequest.ScheduleDateCurrent = CURDATE()) 
                AND HTG_ScheduleRequest.JobStatus = '3' 
    GROUP BY HTG_TechProps.EmpNumber 
    ORDER BY HTG_TechProps.EmpNumber ASC

假設EmpNumber是唯一的,請嘗試以下版本(索引跟隨查詢):

SELECT tp.EmpNumber, tp.EmpFirstName, tp.EmpLastName, tp.Veh_Number,
       (SELECT COUNT(*)
        FROM HTG_ScheduleRequest sr
        WHERE tp.EmpNumber = sr.SSR AND
              sr.ScheduleDateCurrent = CURDATE() AND
              sr.JobStatus = '3'
       )
FROM HTG_TechProps  tp
ORDER BY tp.EmpNumber ASC;

在運行查詢之前,請創建以下索引: HTG_TechProps(EmpNumber)HTG_ScheduleRequest(SSR, JobStatus, ScheduleDateCurrent)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM