sql - Select query too slow > 5min -
मेरे पास 29,000 पंक्तियों के साथ एक तालिका स्तंभों की संख्या & gt; 10 कॉलम होस्टिंग सर्वर में डेटाबेस। SSMS से मैं क्वेरी निष्पादित करता हूं: क्या यह सामान्य है निष्पादन 5 मिनट से अधिक समय तक रहता है? सबसे पहले, एक दूरस्थ डेटाबेस से सभी डेटा प्राप्त करना एक अच्छा विचार कभी नहीं आप बैंडविड्थ का एक महत्वपूर्ण हिस्सा उपयोग कर रहे हैं उम्मीद है कि आप जिस क्वेरी का उपयोग कर रहे हैं वह केवल डिबगिंग उद्देश्य के लिए उपयोग किया जाता है और इसे कभी भी उत्पादन नहीं करना चाहिए। आपने यह उल्लेख नहीं किया कि क्या आपको कुछ प्राप्त करना शुरू होने से 5 मिनट लग गए हैं या यदि आप अपना डेटा प्राप्त कर रहे हैं पाठ्यक्रम उस 5 मिनट में, एक स्थिर दर पर। पहली स्थिति में, सभी पंक्तियों को प्राप्त न करने से संकेत मिलता है कि किसी अन्य ऑपरेशन के कारण, आपके टेबल पर लॉक प्रभावी है। > बाद की स्थिति में, आप निरंतर पंक्तियां प्राप्त कर रहे हैं, लेकिन धीमी दर पर बैंडविड्थ और सर्वर लोड उसमें एक बड़ा हिस्सा खेलते हैं। आपके द्वारा डाउनलोड किए जा रहे डेटा की मात्रा के बारे में किसी न किसी विचार को प्राप्त करने के लिए, इस संग्रहीत कार्यविधि को चलाएं: मान लें कि सर्वर को उस डेटा को अपलोड करना होगा और आपको डेटा डाउनलोड करना होगा। बाइनरी और एक्सएमएल फ़ील्ड (जिसे ब्लॉब क्षेत्र भी कहा जाता है) आमतौर पर बहुत कुछ लेते हैं डेटा का और आप उन फ़ील्ड में उपयोगकर्ता द्वारा संग्रहीत डेटा की मात्रा को नियंत्रित करने में सक्षम नहीं हो सकते हैं। अपनी चर लंबाई क्षेत्रों (varchar, xml और varbinary) के आकार को एक DATALENGTH चालू करके जांचकर देखें आपका कॉलम: आप भी एक औसत प्राप्त कर सकते हैं: ब्लॉब फ़ील्ड के बारे में एक अच्छा विचार है जब उन्हें ज़रूरत पड़ता है और नहीं जब आप डेटा की एक सूची लोड कर रहे हों। उदाहरण के लिए, एक हाल ही में ओआरएम, जैसे एन हेइबरनेट, कॉलम के लिए आलसी लोडिंग प्रदान करता है , पेजिंग के साथ, आप एक छोटी सी पंक्ति प्राप्त कर सकते हैं। असमान परिणाम लोड करने के बारे में Ayende दो हफ्ते पहले सेट किया गया। MyTable है।
MyTable संरचना {StudentId bigint, ....}
MyTable से चयन करें
EXEC sp_spaceused 'YourTableName';
SELECT DATALENGTH (MyField) MyTable से
SELECT AVG (DATALENGTH (MyField)) MyTable से PurchaseOrder तालिका में संग्रहीत XML फ़ील्ड को मानें यदि आप अपने उपयोगकर्ता के लिए पीओ की सूची प्रदर्शित करना चाहते हैं, तो आपको उस फ़ील्ड को पुनः प्राप्त करने की आवश्यकता नहीं है, जब तक कि उपयोगकर्ता पीओ को खोला न जाए।
Comments
Post a Comment