好吧,伙计们,以下问题整天困扰着我:
我使用下面的查询来选择产品和价格的概述,包括基于另一个表(结果)中的字段 StartTime 的最新结果价格。为此,我认为我需要在连接中进行子选择。
问题是 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 子句的所有列上。
任何帮助,将不胜感激。谢谢!