sql - Select query too slow > 5min -


मेरे पास 29,000 पंक्तियों के साथ एक तालिका MyTable है।

  MyTable संरचना {StudentId bigint, ....}   

स्तंभों की संख्या & gt; 10 कॉलम होस्टिंग सर्वर में डेटाबेस।

SSMS से मैं क्वेरी निष्पादित करता हूं:

  MyTable से चयन करें   

क्या यह सामान्य है निष्पादन 5 मिनट से अधिक समय तक रहता है?

सबसे पहले, एक दूरस्थ डेटाबेस से सभी डेटा प्राप्त करना एक अच्छा विचार कभी नहीं आप बैंडविड्थ का एक महत्वपूर्ण हिस्सा उपयोग कर रहे हैं उम्मीद है कि आप जिस क्वेरी का उपयोग कर रहे हैं वह केवल डिबगिंग उद्देश्य के लिए उपयोग किया जाता है और इसे कभी भी उत्पादन नहीं करना चाहिए।

आपने यह उल्लेख नहीं किया कि क्या आपको कुछ प्राप्त करना शुरू होने से 5 मिनट लग गए हैं या यदि आप अपना डेटा प्राप्त कर रहे हैं पाठ्यक्रम उस 5 मिनट में, एक स्थिर दर पर।

पहली स्थिति में, सभी पंक्तियों को प्राप्त न करने से संकेत मिलता है कि किसी अन्य ऑपरेशन के कारण, आपके टेबल पर लॉक प्रभावी है। > बाद की स्थिति में, आप निरंतर पंक्तियां प्राप्त कर रहे हैं, लेकिन धीमी दर पर बैंडविड्थ और सर्वर लोड उसमें एक बड़ा हिस्सा खेलते हैं। आपके द्वारा डाउनलोड किए जा रहे डेटा की मात्रा के बारे में किसी न किसी विचार को प्राप्त करने के लिए, इस संग्रहीत कार्यविधि को चलाएं:

  EXEC sp_spaceused 'YourTableName';   

मान लें कि सर्वर को उस डेटा को अपलोड करना होगा और आपको डेटा डाउनलोड करना होगा।

बाइनरी और एक्सएमएल फ़ील्ड (जिसे ब्लॉब क्षेत्र भी कहा जाता है) आमतौर पर बहुत कुछ लेते हैं डेटा का और आप उन फ़ील्ड में उपयोगकर्ता द्वारा संग्रहीत डेटा की मात्रा को नियंत्रित करने में सक्षम नहीं हो सकते हैं।

अपनी चर लंबाई क्षेत्रों (varchar, xml और varbinary) के आकार को एक DATALENGTH चालू करके जांचकर देखें आपका कॉलम:

  SELECT DATALENGTH (MyField) MyTable से   

आप भी एक औसत प्राप्त कर सकते हैं:

  SELECT AVG (DATALENGTH (MyField)) MyTable से   

ब्लॉब फ़ील्ड के बारे में एक अच्छा विचार है जब उन्हें ज़रूरत पड़ता है और नहीं जब आप डेटा की एक सूची लोड कर रहे हों।

उदाहरण के लिए, एक PurchaseOrder तालिका में संग्रहीत XML फ़ील्ड को मानें यदि आप अपने उपयोगकर्ता के लिए पीओ की सूची प्रदर्शित करना चाहते हैं, तो आपको उस फ़ील्ड को पुनः प्राप्त करने की आवश्यकता नहीं है, जब तक कि उपयोगकर्ता पीओ को खोला न जाए।

हाल ही में ओआरएम, जैसे एन हेइबरनेट, कॉलम के लिए आलसी लोडिंग प्रदान करता है , पेजिंग के साथ, आप एक छोटी सी पंक्ति प्राप्त कर सकते हैं।

असमान परिणाम लोड करने के बारे में Ayende दो हफ्ते पहले सेट किया गया।

Comments

Popular posts from this blog

qt - switch/case statement in C++ with a QString type -

python - sqlite3.OperationalError: near "REFERENCES": syntax error - foreign key creating -

Python's equivalent for Ruby's define_method? -