ПОРЪЧАЙ ПО
трябва да сортира набора от резултати, което може да отнеме много време, ако е голям.
За да го оптимизирате, може да се наложи да индексирате правилно таблиците.
Пътят за достъп до индекса обаче има своите недостатъци, така че дори може да отнеме повече време.
Ако имате нещо различно от equijoins във вашата заявка или диапазонирани предикати (като <
, >код> или
МЕЖДУ
или ГРУПИРАНЕ ПО
клауза), след това индексът, използван за ORDER BY
може да попречи на другите индекси да бъдат използвани.
Ако публикувате запитването, вероятно ще мога да ви кажа как да го оптимизирате.
Актуализация:
Пренапишете заявката:
SELECT *
FROM View_Product_Joined j
LEFT JOIN
[dbo].[OPR_InventoryRules] irp
ON irp.ID = j.skuid
AND irp.InventoryRulesType = 'Product'
LEFT JOIN
[dbo].[OPR_InventoryRules] irs
ON irs.ID = j.NodeSiteID
AND irs.InventoryRulesType = 'Store'
CROSS APPLY
(
SELECT TOP 1 *
FROM OPR_PriceLookup pl
WHERE pl.siteID = j.NodeSiteID
AND pl.skuid = j.skuid
AND pl.RoleID IN (-1, 13)
ORDER BY
pl.RoleID desc
) pl
WHERE SiteName = N'EcommerceSite'
AND Published = 1
AND DocumentCulture = N'en-GB'
AND NodeAliasPath LIKE N'/Products/Cats/Computers/Computer-servers/%'
AND NodeSKUID IS NOT NULL
AND SKUEnabled = 1
ORDER BY
NodeOrder ASC
Връзката View_Product_Joined
, както подсказва името, вероятно е изглед.
Можете ли да публикувате определението му?
Ако може да се индексира, можете да се възползвате от създаването на индекс на View_Product_Joined (SiteName, Published, DocumentCulture, SKUEnabled, NodeOrder)
.