簡體   English   中英

如何在不更改基礎表的情況下提高MySQL查詢的性能?

[英]How can I improve performance of a MySQL query without changing the underlying tables?

我有一個查詢來自第三方產品的數據的應用程序。 因此,我渴望不更改表結構。

有沒有一種方法可以純粹在查詢方面提高效率?

我的查詢是:

CallsClosed.Query = @"SELECT COALESCE(ti.FIRST_NAME,'Not Assigned') AS 'Technician', COUNT(*) 'Calls_Closed'
FROM WorkOrder_Threaded wot
INNER JOIN WorkOrder wo ON wot.WORKORDERID=wo.WORKORDERID
LEFT JOIN SDUser sdu ON wo.REQUESTERID=sdu.USERID
LEFT JOIN AaaUser aau ON sdu.USERID=aau.USER_ID
LEFT JOIN WorkOrderStates wos ON wo.WORKORDERID=wos.WORKORDERID
LEFT JOIN SDUser td ON wos.OWNERID=td.USERID
LEFT JOIN AaaUser ti ON td.USERID=ti.USER_ID
WHERE (wo.COMPLETEDTIME != 0) AND (wo.COMPLETEDTIME != -1) AND (wo.COMPLETEDTIME IS NOT NULL)
AND wo.COMPLETEDTIME >= (UNIX_TIMESTAMP(TIMESTAMP('" + sdChartRange.From + @"')) * 1000)
AND wot.THD_WOID=wot.WORKORDERID
GROUP BY Technician ORDER BY 'Calls_Closed' DESC";

我已經在上面運行了JetProfiler,看來主要的罪魁禍首是wot表的大小。 (約19k行)

關於我應該從哪里開始加快查詢的任何建議? (目前大約需要4秒鍾才能運行)

  1. 最小化您必須執行的連接數。
  2. 回應評論,添加索引。
  3. 查看該查詢的EXPLAIN QUERY結果。
  4. 如果解決滿意,將樣本數據發布到小提琴中 ,我來看看。
  • 確保在用於選擇和聯接的字段上具有索引。
  • 檢查不再有效的外鍵(“懸掛”)。

暫無
暫無

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

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