У меня есть запрос SQL, в котором мы выбираем список продуктов, но также необходимо запросить таблицу заказов, чтобы узнать, сколько было продано. Есть ли более эффективный способ получить номер Sold sum без subQuery?Есть ли лучший, более оптимизированный способ выполнения этого SQL-запроса?
SELECT tProducts.ID as ID,
tProducts.Name,
tProducts.Description,
Highlights=Replace(Replace(tProducts.Highlights, '##productdeliverydate##', convert(varchar, @ProjectReleaseDt, 101)),'##productltdedition##', @productltdedition),
tProducts.isLocked as isLocked,
tProducts.isVisible as isVisible,
tProducts.ImageID as ImageID,
tProducts.ShippingYN as ShippingYN,
tProducts.LastDateUpdate as LastDateUpdate,
tProducts.BaseUnitPrice as Price,
FileExtension = case tProjectImages.FileExtention
WHEN tProjectImages.FileExtention then tProjectImages.FileExtention
ELSE '.none'
END,
@ImagePath as ImagePath,
@ImageServerPath as ExternalServerPath,
@ThumbExt as ThumbnailExtension,
tProducts.SalesContainerTypeID,
tProducts.ListOrder,
tProducts.isParticipantListed,
tProducts.LimitQuantity,
tPRoducts.isFeature,
numbersold=(SELECT sum(quantity)
from tOrderDetails
JOIN tOrders
on tORders.OrderID=tORderDetails.ORderID
where productID=tProducts.ID
and tOrders.isTestOrder=0),
FROM tProducts
LEFT JOIN tProjectImages ON tProducts.ImageID = tProjectImages.ID
WHERE tProducts.ProjectID = @projectID
and tProducts.isVisible=1
and tProducts.SalesContainerTypeID = 6
and [email protected]
ORDER BY tProducts.BaseUnitPrice ASC
Отмечено как ответ. Предлагаемые индексы были на самом деле лучшим решением, и исходный подзапрос кажется наиболее оптимальным – redoc