ORDER BY
cần sắp xếp tập kết quả có thể mất nhiều thời gian nếu nó lớn.
Để tối ưu hóa nó, bạn có thể cần lập chỉ mục các bảng đúng cách.
Tuy nhiên, đường dẫn truy cập chỉ mục có nhược điểm của nó nên thậm chí có thể mất nhiều thời gian hơn.
Nếu bạn có một cái gì đó không phải là tương đương trong truy vấn của bạn hoặc các vị từ khác nhau (như <
, >
hoặc BETWEEN
hoặc GROUP BY
mệnh đề), sau đó là chỉ mục được sử dụng cho ORDER BY
có thể ngăn không cho các chỉ mục khác được sử dụng.
Nếu bạn đăng truy vấn, tôi có thể cho bạn biết cách tối ưu hóa nó.
Cập nhật:
Viết lại truy vấn:
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
Mối quan hệ View_Product_Joined
, như tên cho thấy, có thể là một chế độ xem.
Bạn có thể vui lòng đăng định nghĩa của nó được không?
Nếu nó có thể lập chỉ mục, bạn có thể được lợi khi tạo chỉ mục trên View_Product_Joined (SiteName, Published, DocumentCulture, SKUEnabled, NodeOrder)
.