2014-01-21 43 views
0

爲什麼這個查詢是緩慢的,當我通過它的做工精細,否則刪除其順序很慢當我使用desc加入查詢時,爲什麼它的速度很慢?

SELECT SQL_CACHE DISTINCT A.*, B.Manual_Trigger_Form 
FROM 
cbp_process_instance A, cbp_process B 
WHERE 
A.Process_ID = B.Process_ID 
AND 
B.Process_Status='Active' 
ORDER BY Instance_ID DESC LIMIT 0, 15 
+2

哪個表屬於Instance_ID?無論如何看看http://dev.mysql.com/doc/refman/5.0/en/explain.html –

+0

cbp_process是父表和cbp_process_instance是子表 – user1838925

+0

你沒有回答我的問題。 –

回答

0
  • 首先,你想使用內連接。它會減少查詢執行時間 並提高查詢性能。
  • 嘗試下面的代碼

    SELECT A. *,B.Manual_Trigger_Form FROM cbp_process_instance 甲INNER JOIN cbp_process乙
    ON A.Process_ID = B.Process_ID
    WHERE B.Process_Status = '有效' ORDER BY INSTANCE_ID DESC

+0

其添加了我的錯誤 –

+0

是的,發佈此問題後我還沒有審查 –

1

刪除DISTINCT*。只需選擇您實際想要返回的列。並用明確的JOIN語法寫出你的查詢,而不是隱式的逗號連接垃圾。

對於性能,請在(b.Process_ID,b.Process_Status)上包含索引

相關問題