मैं निम्नलिखित डीबी से शीर्ष 100 और 101 लाइनों और gettings elapsing बार, निकालने के लिए अगले प्रश्नों का उपयोग कर का उपयोग करते समय जो पूरी तरह से अलग (दूसरा क्वेरी ~ 8 पहले की तुलना में धीमी):कम प्रदर्शन क्वेरी डेटाबेस चर
SELECT TOP (100) *
FROM PhotoLike WHERE [email protected] AND accountId<>@accountId
ORDER BY createDate DESC
GO
एसक्यूएल सर्वर निष्पादन टाइम्स: सीपीयू समय = 187 एमएस, विलुप्त समय = 202 एमएस।
SELECT TOP (101) *
FROM PhotoLike WHERE [email protected] AND accountId<>@accountId
ORDER BY createDate DESC
GO
एसक्यूएल सर्वर निष्पादन समय: CPU समय = 266 एमएस, बीता हुआ समय = 1644 एमएस। पहले दो मामलों की
निष्पादन योजना:
लेकिन अगर मैं @accoundId चर से छुटकारा पाने के, मैं निम्नलिखित मिल परिणाम है, जो लगभग बराबर होती है और तेजी से इस सवाल से पहले क्वेरी से अधिक से अधिक 2 बार।
SELECT TOP (100) *
FROM PhotoLike WHERE photoAccountId=10 AND accountId<>10
ORDER BY createDate DESC
GO
एसक्यूएल सर्वर निष्पादन समय: CPU समय = 358 एमएस, बीता हुआ समय = 90 एमएस।
SELECT TOP (101) *
FROM PhotoLike WHERE photoAccountId=10 AND accountId<>10
ORDER BY createDate DESC
GO
एसक्यूएल सर्वर निष्पादन समय: CPU समय = 452 एमएस, बीता हुआ समय = 93 एमएस।
निष्पादन दूसरा दो मामलों की योजना:
ऐसा क्यों होता है और मैं varibales साथ प्रदर्शन बेहतर बनाने?
अद्यतन
जोड़ा निष्पादन योजना है।
क्या आपने निष्पादन योजना को देखा है? – Brandon
'टॉप 100/टॉप 101' समस्या ज्ञात है, [यह ब्लॉग] देखें (http://www.mssqltips.com/sqlservertip/2053/trick-to-optimize-top-clause-in-sql-server/)। पैरामीटर के साथ स्पीड गिरावट शायद [पैरामीटर स्नीफिंग] (http://blogs.technet.com/b/mdegre/archive/2012/03/19/what-is-parameter-sniffing.aspx) के कारण है। –
@ निकोलामार्कोविनोविच - यह पैरामीटर स्नीफिंग के विपरीत है, 'विकल्प (रिकॉम्पिल)' का उपयोग करते हुए वैरिएबल को स्नीफ नहीं किया जाता है, इसलिए यह वास्तविक अनुमानों के आधार पर सामान्य अनुमान नहीं बनाता है। 'टॉप 101' व्यवहार [हमेशा एक समस्या नहीं है] (http://sqlblog.com/blogs/paul_white/archive/2010/08/27/sorting-row-goals-and-the-top-100-problem .aspx) हालांकि ऐसा लगता है कि यह इस मामले में है। यह एक पूर्ण प्रकार और 'टॉप एन' प्रकार के बीच काट ऑफ पॉइंट है। –