द्वारा ORDER के कारण SQL क्वेरी का खराब प्रदर्शन WHERE खंड में कई स्थितियों के साथ 4 टेबल में शामिल होने में एक क्वेरी है। क्वेरी में संख्यात्मक कॉलम पर ऑर्डर द्वारा ऑर्डर भी शामिल है। लौटने में 6 सेकंड लगते हैं जो बहुत लंबा होता है और मुझे इसे तेज करने की आवश्यकता होती है। आश्चर्य की बात है कि मैंने पाया कि अगर मैं ऑर्डर द्वारा ऑर्डर हटा देता हूं तो इसमें 2 सेकंड लगते हैं। क्यों आदेश इतना बड़ा अंतर बनाता है और इसे अनुकूलित करने के लिए कैसे? मैं एसक्यूएल सर्वर 2005 का उपयोग कर रहा हूँ। बहुत धन्यवाद।खंड
मैं पुष्टि नहीं कर सकता है कि आदेश द्वारा के बाद से मैं कार्य योजना लागू करके संचय को साफ़ कर रहा हूँ बड़ा अंतर बना देता है। हालांकि क्या आप इसे थोड़ा तेज करने के तरीके पर प्रकाश डाल सकते हैं? प्रश्न निम्नानुसार है (सादगी के लिए "चयन *" है, लेकिन मैं केवल उन्हीं को चुन रहा हूं जिन्हें मैं चाहता हूं)।
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
क्या आपने क्वेरी योजना देखी है? –
स्तंभ है कि आप अपने आदेश में उपयोग कर रहे हैं BY खंड का अनुक्रमण कोशिश (यदि आप पहले से ही नहीं है, वह यह है कि) – davek
यह भी सुनिश्चित करें कि आप प्रत्येक परीक्षा के बीच नीचे डेटा/कार्य योजना लागू करके कैश को साफ़ करना, वरना आप विषम परिणाम मिल सकता है (सबसे खराब केस परिदृश्य वे वास्तव में वही करते हैं, लेकिन कैश से डेटा प्राप्त करने के बाद दूसरा रन तेज होता है)। – AdaTheDev