我試圖從多個表中獲取數據,這些數據需要合併在一起進行報告。我正在嘗試獲取每個在特定日期後完成的每個標題的所有詳細信息,並且必須檢查由於不良數據而導致的0日期。加速超時的MySQL查詢
我正在使用遺留表格,我很遺憾地沒有創建並且無法更改。此聲明在我的應用程序中超時,並且需要大約40秒才能在本地虛擬機上運行數據庫。是否有可能重構查詢以獲得更好的性能?任何幫助表示讚賞!
SELECT detail.*
FROM detail
JOIN header
ON detail.invoice = header.invoice
WHERE detail.dateapply != '0000-00-00'
AND header.dateapply >= '2017-09-17'
AND header.orderstatus IN ('complete', 'backorder')
ORDER BY detail.DateApply;`
'dateapply'是什麼字段類型? – JNevill
你有索引on dateapply和orderstatus? – sskoko
理想的事情是爲正在連接和過濾的表添加適當的索引。但是既然你不能改變桌子......我猜測你運氣不好?除非添加索引不計算爲「無法更改」 – knittl