我有一个查询需要连接4个表,WHERE子句中有很多条件。查询还包括对数字列的ORDER BY子句。返回结果需要6秒钟,时间太长,我需要加快速度。令人惊讶的是,如果我删除ORDER BY子句,只需要2秒钟。为什么ORDER BY会有如此大的差异,如何进行优化?我使用的是SQL server 2005。非常感谢。
由于我正在清除执行计划缓存,无法确认ORDER BY是否会产生重大影响。然而,您能否解释一下如何稍微加快这个查询的速度?查询如下(为简单起见,“SELECT *”,但我只选择需要的部分)。
由于我正在清除执行计划缓存,无法确认ORDER BY是否会产生重大影响。然而,您能否解释一下如何稍微加快这个查询的速度?查询如下(为简单起见,“SELECT *”,但我只选择需要的部分)。
SELECT *
FROM View_Product_Joined j
INNER JOIN [dbo].[OPR_PriceLookup] pl on pl.siteID = NodeSiteID and pl.skuid = j.skuid
LEFT JOIN [dbo].[OPR_InventoryRules] irp on irp.ID = pl.SkuID and irp.InventoryRulesType = 'Product'
LEFT JOIN [dbo].[OPR_InventoryRules] irs on irs.ID = pl.siteID and irs.InventoryRulesType = 'Store'
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) AND pl.PriceLookupID in (select TOP 1 PriceLookupID from OPR_PriceLookup pl2 where pl.skuid = pl2.skuid and (pl2.RoleID = -1 or pl2.RoleId = 13) order by pl2.RoleID desc)))
ORDER BY NodeOrder ASC