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

यह एसक्यूएल स्टेटमेंट (2 टेबल जॉइन के साथ) को पूरा होने में 5 मिनट क्यों लगते हैं?

यह सही नहीं है।

मेरे पास दो संभावनाएं हैं:

1) टेबल पर आंकड़े पुराने हैं। अनुक्रमणिका का पुनर्निर्माण करें और आंकड़े अपडेट करें।

2) जैसा कि आपने कहा, भूगोल तालिका रिकॉर्ड कई पृष्ठों में फैले हुए हैं (ऐसा नहीं है कि एक रिकॉर्ड कई पृष्ठों में फैला हुआ है क्योंकि यह नहीं हो सकता है लेकिन रिकॉर्ड 8K अंक के करीब है)। इस मामले में, काफी मज़ेदार, क्लस्टर्ड इंडेक्स पर एक और गैर-क्लस्टर इंडेक्स बनाने से मदद मिल सकती है।

अपडेट करें

मुझे खुशी है कि इसने काम किया है। अब कुछ स्पष्टीकरण।

सबसे पहले, अगर कुछ वास्तव में सही नहीं है और निष्पादन योजना अजीब लगती है, तो हमेशा आंकड़ों को देखें और अनुक्रमणिका का पुनर्निर्माण करें।

क्लस्टर्ड इंडेक्स के लिए नॉन-क्लस्टर इंडेक्स बनाने से आमतौर पर कोई लाभ नहीं मिलना चाहिए, लेकिन जब टेबल में कई रिकॉर्ड होते हैं और रिकॉर्ड इसकी 8K सीमा के करीब होता है, तो यह मददगार होता है। जैसा कि आप जानते हैं, SQL जब रिकॉर्ड लोड करने के लिए डिस्क पर जाता है, तो यह एक 8K पेज लोड करता है। इसी तरह इंडेक्स में जाने पर यह 8K पेज लोड करेगा। अब इंडेक्स 4-बाइट पूर्णांक होने के साथ इसका मतलब 2000 रिकॉर्ड के लिए आईडी लोड करना है, जबकि यह क्लस्टर इंडेक्स का उपयोग करता है तो यह मुट्ठी भर रिकॉर्ड लोड करने जा रहा है (ध्यान रखें कि हमें जॉइन बिट के लिए आईडी की आवश्यकता है)। अब यह एक द्विआधारी खोज होने के साथ, मुझे उम्मीद नहीं है कि यह केवल थोड़ी सी मदद करेगा। तो शायद कुछ और बिल्कुल सही नहीं है, लेकिन यह अनुमान लगाना मुश्किल है कि आपने सिस्टम को नहीं देखा है।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL एकाधिक कॉलम डेटा को अनपिवट करें

  2. SQL:शीर्ष 3 रिकॉर्ड + मात्रा का योग चुनें

  3. सम्मिलित रिकॉर्ड की आईडी पुनर्प्राप्त करें:Php और MS SQL सर्वर

  4. टी-एसक्यूएल - क्या दो तालिकाओं में डेटा की तुलना करने का कोई (मुक्त) तरीका है?

  5. शेर्लोट SQL सर्वर उपयोगकर्ता समूह:धीमी क्वेरी को ठीक करें। तेज।