ORDER BY
結果セットを並べ替える必要がありますが、大きい場合は時間がかかる場合があります。
最適化するには、テーブルを適切にインデックス化する必要がある場合があります。
ただし、インデックス アクセス パスには欠点があるため、さらに時間がかかる場合があります。
クエリに等結合以外のものがある場合、または範囲述語 (<
など) 、 >
または BETWEEN
、または GROUP BY
節)、次に 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)
にインデックスを作成すると効果的です。 .