Sqlserver
 sql >> डेटाबेस >  >> RDS >> Sqlserver

ट्रिपल इनर 10,000 से अधिक पंक्तियों और एएसपी-गणना स्टालों के आवेदन के साथ जुड़ते हैं

आइए इस बात को ध्यान में रखते हुए इसका विश्लेषण करें कि SQL में ORDER BY क्लॉज है:-

do until rs.eof 
  response.flush 
  counter = counter + 1 

  ' A LOT of calculations and putting in array... 

  rs.movenext 
loop

Response.Flush पर ध्यान दें , पहली चीज जो मैं करूंगा वह है इससे छुटकारा। आपको शायद एएसपी प्रतिक्रिया बफरिंग सीमा (आईआईएस प्रबंधक में) बढ़ाने की आवश्यकता होगी। फ्लश क्लाइंट को अब तक जेनरेट की गई सामग्री भेज रहा है, यह क्लाइंट को पूरा होने से पहले भेजे गए सभी पैकेटों की प्राप्ति की पुष्टि करने की प्रतीक्षा करता है। यही वह जगह है जहां मुझे लगता है कि 5+ मिनट का 90% खर्च किया जा रहा है।

अब "बहुत गणना"। वीबीस्क्रिप्ट अपने प्रदर्शन के लिए नहीं जानता है। इस कोड में कुछ समय लग सकता है। कुछ मामलों में कुछ गणनाओं को स्क्रिप्ट की तुलना में SQL द्वारा बहुत बेहतर तरीके से किया जा सकता है, इसलिए यह एक विकल्प है। एक और जटिल काम करने के लिए कुछ COM संकलित घटक बनाना होगा (हालांकि कुछ लेखांकन को मार्शलिंग के लिए बनाया जाना चाहिए जो लाभ मिटा सकता है)। हालाँकि यह अपरिहार्य हो सकता है कि आपको इन कैल्क्स को VBScript में करने की आवश्यकता है।

अब rs.movenext . इस लूप का मतलब है कि आप हर समय प्रसंस्करण की आवश्यकता के लिए कनेक्शन और रोसेट को खुला रखते हैं। यही वह समय है जब सर्वर क्लाइंट को नेटवर्क पर बाइट भेज रहे हैं और जबकि वीबीस्क्रिप्ट संख्याओं को क्रंच कर रहा है। एक बेहतर तरीका यह होगा कि सभी पंक्तियों को जल्दी से सोख लिया जाए और डीबी से डिस्कनेक्ट कर दिया जाए, फिर क्रंच नंबर और आखिरकार क्लाइंट को बफर डंप करें।

डिस्कनेक्ट किए गए रिकॉर्डसेट का उपयोग करने पर विचार करें (आप क्लाइंट साइड स्टैटिक कर्सर निर्दिष्ट करते हैं) या यहां तक ​​कि सरल GetRows रिकॉर्डसेट ऑब्जेक्ट की विधि जो पूरे रोसेट को 2-आयामी सरणी में डंप करती है। इसका मतलब यह होगा कि आप कम से कम समय के लिए विभिन्न टेबलों पर ताले बनाए रखेंगे।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Mssql का उपयोग करके 'LIMIT' के पास गलत सिंटैक्स

  2. SQL अगर रिकॉर्ड इससे पहले के रिकॉर्ड के बराबर है

  3. UNPIVOT का उपयोग करके स्तंभों को पंक्तियों में स्थानांतरित करना

  4. SQL सर्वर 2008 में NVarChar में UTF-8 के संग्रहण में समस्या आ रही है

  5. एकाधिक पंक्तियों को एक पंक्ति में मर्ज करें