我有一个查询,在WHERE有许多条件的四个表连接在子句中。该查询还包含在数字列中ORDER 9 Y. ^3 o8 g# ]) G; v0 pBY句子。返回过程需要6秒。太长了。我需要加快速度。令人惊讶的是,我发现如果删除了,ORDER; ~. K" F; G- g- o h& y8 N
BY这句话需要2秒钟。为什么订单有如此巨大的差异,以及如何优化它们?我正在用它SQL Server2005。非常感谢。) F% b' m& L4 a/ W/ `" R0 V
由于我正在清除执行计划的缓存,我无法确认ORDER BY会有很大的不同。但是,你能解释如何加快速度吗?查询如下(为简单起见,有 SELECT * |* {; i9 r7 x* ~* H*但我只选择我需要的。 4 q- p! N7 U$ ASELECT *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 6 O0 f7 k2 _, ~+ o, j 解决方案: 5 R7 R+ w3 E [5 ]% \! q
为什么订购者会有如此巨大的差异,以及如何优化?, a% ?3 F& L1 B0 D5 J
在ORDER BY需要排序,如果是可能需要很长时间的结果集。 7 W- Q9 `. l( S& Z. A2 L e8 y8 _8 _+ [! v您可能需要正确的索引表来优化它。3 s7 Y: c2 B: |
但索引访问路径有其缺点,甚至可能需要更长的时间。 * k, Q6 W3 L* F% E如果查询中没有等值连接或范围谓词(例如或BETWEEN或GROUP BY子句),用于索引ORDERBY可能会阻止使用其他索引。+ y* \/ d1 D7 M8 t' @* E. P9 f
如果您发布查询,我可能会告诉您如何优化查询。 7 S- j5 S* T3 K3 i: i更新: 2 o( G. _! u. `7 H重写查询: 1 F. N* v9 c+ ]8 E4 s& T. l( q13) ORDER BY pl.RoleID desc plWHERE SiteName = N'EcommerceSite' AND Published = AND DocumentCulture = N'en-GB' AND NodeAliasPath LIKE N'/Products/Cats/Computers/Computer-servers/%' AND NodeSKUID IS NOT NULL AND SKUEnabled = 1ORDER BY NodeOrder ASC13) ORDER BY pl.RoleID desc ) plWHERE 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 = 1ORDER BY NodeOrder ASCView_Product_Joined顾名思义,这种关系可能是一种视图。 + G( W) A+ n- ?* }4 T$ Y& d& j `你能发表它的定义吗? T1 t; \( q: b
如果是可索引的,可能会受益于在上面创建索引View_Product_Joined (SiteName,Published,DocumentCulture,SKUEnabled,NodeOrder)。