itemlist에서 항목에 링크 된 pricelist에서 최고 가격을 검색하기 위해이 좋지만 느린 작업 SQL 문을 만들었습니다."max() - searching"SQL 하위 쿼리의 속도를 높이는 방법
이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
ITEMLIST 약 100,000 항목과 가격 목록에 대한 1000000 가격을 원하는 분야 알려진 항목 itemnr입니다. 이 진술은 정말 느립니다. DB 서버가 검색하는 모든 항목에 대해 전체 pricelist를 검색 할까 봐 걱정됩니다.
나는 itemnr을 알고있다. 하지만 어떻게 든 해당 itemid를 검색하고이 itemid를 하위 쿼리로 "보낼"수 있습니까? 그래서 서브 쿼리는이 항목의 가장 높은 가격을 빨리 찾을 수 있습니까 ??? 아니면 내 문제에 대한 다른 해결책이 있습니까?
도와주세요. 그것은 가능성이 일부 인덱스 개조하면 되겠 도움이 될 것입니다
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
, 당신은 내가 만들 수에 대한 몇 가지 정보를 제공하면 :
테이블에 어떤 색인이 있습니까? – wickedone
어떤 종류의 SQL입니까? – podiluska
'(price, ItemId) '에 대한 색인이 도움이 될 것입니다. –