奧凱傢伙,下面已被竊聽我整天:基於現場MySQL的選擇加入條款掃描行數太多
我用下面的查詢選擇的產品和價格,包括最新的結果,價格的概述StartTime從另一個表(tresults)。爲了做到這一點,我認爲我需要在連接中使用子選擇。
問題是EXPLAIN函數告訴我MySQL正在掃描所有不使用任何索引的結果行(225000行)。
有什麼方法可以加快速度?最好通過添加一個WHERE語句讓mysql僅查看具有相應pID的行。
select p.pID, brandname, description, p.EAN, RetailPrice, LowestPrice, min(price), min(price)/lowestprice-1 as afwijking
from tproducts p
join (
select Max(tresults.StartTime) AS maxstarttime, tresults.pID
from tresults
-- maybe adding a where clause here?
group by tresults.pID
) p_max on (p_max.pID = p.pID)
join tresults res on (res.starttime = p_max.maxstarttime and p.pID = res.pID and res.websiteID = 1)
join tsupplierproducts sp on (sp.pID = p.pID AND supplierID = 1)
join tbrands b on (b.brandID = p.BrandID)
group by p.pID, brandname, description, p.EAN, RetailPrice, LowestPrice
索引位於所有屬於連接或where子句一部分的列上。
任何幫助,將不勝感激。謝謝!
您可以加入哪些指標上的表格中設置一些信息?例如,tresults.StartTime列中是否有索引集? – Johan
我已經添加了一行。幾乎所有在連接或子句索引的地方。問題的根源在於加入(select ...)部分 – kay10