ORDER BY
perlu mengurutkan hasil yang mungkin memakan waktu lama jika besar.
Untuk mengoptimalkannya, Anda mungkin perlu mengindeks tabel dengan benar.
Namun, jalur akses indeks memiliki kekurangan sehingga bisa memakan waktu lebih lama.
Jika Anda memiliki sesuatu selain equijoin dalam kueri Anda, atau predikat rentang (seperti <
, >
atau BETWEEN
, atau GROUP BY
klausa), maka indeks yang digunakan untuk ORDER BY
dapat mencegah indeks lain digunakan.
Jika Anda memposting kueri, saya mungkin dapat memberi tahu Anda cara mengoptimalkannya.
Pembaruan:
Tulis ulang kueri:
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
Relasi View_Product_Joined
, seperti namanya, mungkin adalah pemandangan.
Bisakah Anda memposting definisinya?
Jika dapat diindeks, Anda dapat memanfaatkan pembuatan indeks di View_Product_Joined (SiteName, Published, DocumentCulture, SKUEnabled, NodeOrder)
.