我已经创建了这个良好但运行缓慢的SQL语句,用于从链接到项目列表中的项目的价目表中搜索最高的价格。Known是项目项目is:
SELECT i.ItemNr, i.ItemId, x.maxprice
FROM itemlist i,
pricelist p,
(SELECT MAX (p2.price) AS maxprice, p2.ItemId
FROM pricelist p2
GROUP BY p2.ItemId) x
WHERE i.ItemNr = 4711
AND i.ItemId = p.ItemId
AND i.ItemId = x.ItemId
AND p.price = x.maxprice商品清单中有大约100000种商品,价目表中有大约1000000种价格。这条语句真的很慢。我担心db-server会搜索我搜索的每一种商品的整个价目表。
我知道这个项目。但是,我是否可以搜索相应的itemid并将此itemid“发送”到子查询?如此子查询可以快速找到该商品的最高价格?或者我的问题还有其他的解决方案吗?
请帮帮忙。
发布于 2012-11-01 22:26:20
我已经将不需要的连接删除回pricelist,因为您没有从其中选择任何列:
select i.ItemNr, i.ItemId, x.maxprice
from itemlist i
inner join (
select MAX(price) as maxprice, ItemId
from pricelist
group by ItemId
) x on i.ItemId = x.ItemId
where i.ItemNr = 4711这可能是一些索引调整将有所帮助,一旦你提供了一些信息,我可以提出一些建议。
https://stackoverflow.com/questions/13179025
复制相似问题