database - Tips and Tricks to speed up an SQL -


संभव डुप्लिकेट:

ये मूल बातें SQL फ़ंक्शन और कीवर्ड हैं।

क्या आपके SQL को गति देने के लिए कोई युक्तियां या चाल है?

उदाहरण के लिए; मेरे पास कई खोजशब्दों के साथ एक प्रश्न है ( AND, GROUP BY, ORDER BY, IN, BE, जैसे ... etc)

कौन सा खोजशब्द मेरी क्वेरी में सबसे ऊपर होना चाहिए? मैं इसे कैसे तय कर सकता हूं?

उदाहरण;

  जहां नंबर IN (156, 646) और '01 / 01/2011 'और '01 / 02/2011 के बीच की तिथि '01 / 01/2011 'और '01 / 02/2011' के बीच और जहां की संख्या (156, 646)   

OR

  < / कोड>  

कौन सा एक तेज़ है?

कोई "ट्रिक्स" नहीं है।

प्रतियोगिता को देखते हुए डेटाबेस विक्रेताओं के बीच जो एक "तेज" है, किसी भी "चाल" जो कि हमेशा सही होता है डेटाबेस में ही कार्यान्वित होगा (इन चीजों को "ऑप्टिमाइज़र" नामक डेटाबेस के रूप में लागू किया गया है)।

वहाँ केवल कुछ चीजें हैं जिनके बारे में पता होना चाहिए, लेकिन इन्हें आम तौर पर कम नहीं किया जा सकता है:

  • सुविधा
  • सुविधा का प्रयोग करें वाई
  • यह
  • उस

    मॉडलों की तरह कभी भी मॉडल / सूचकांक, सूचकांक प्रकार, अनुक्रमणिका रणनीतियों, क्लस्टरिंग, एकल स्तंभ कुंजी, परिसर चाबियाँ, संदर्भित अखंडता, पहुंच पथ, शामिल हो, तंत्र में शामिल होने, भंडारण इंजन, अनुकूलक व्यवहार, डेटाटाइप, सामान्यीकरण, क्वेरी परिवर्तन, निरूपण, प्रक्रियाएं, बफर कैश, परिणामस्वरूप कैश, अनुप्रयोग कैश, मॉडलिंग, एकत्रीकरण, कार्य, दृश्य, अनुक्रमित दृश्य, प्रसंस्करण सेट, प्रक्रियात्मक प्रसंस्करण और सूची में चला जाता है

    उन सभी को एक विशिष्ट समस्या क्षेत्र पर हमला करने का आविष्कार किया गया था। उस समस्या पर भिन्नता "चाल" अधिक या कम उपयुक्त बनाते हैं। अक्सर युग के शून्य प्रभाव पड़ते हैं, और कभी-कभी कभी भी भयानक रूप से बाहर निकलते हैं। क्यूं कर? क्योंकि जब हम समझ नहीं पाते हैं कि कोई काम क्यों करता है, तो हम मूल रूप से इस समस्या पर सुविधाओं को फेंक रहे हैं जब तक कि यह दूर न हो जाए।

    मुख्य बिंदु यह है कि ऐसा कोई कारण है, जिसके कारण कोई एक प्रश्न आगे बढ़ता है , और समझने जो कुछ है, वह है < मजबूत> महत्वपूर्ण समझने की प्रक्रिया में एक अलग असंबंधित क्वेरी धीमा क्यों है, और इसके साथ कैसे निपटें। और यह कभी एक चाल नहीं है, न ही जादू है।

    हम (इंसानों) आलसी हैं, और हम उस मछली को फेंकना चाहते हैं, जब हमें वास्तव में क्या चाहिए, यह जानने के लिए कि उसे कैसे पकड़ना है।

    अब, आप किस विशिष्ट मछली को पकड़ना चाहते हैं?

    टिप्पणियों के लिए संपादित करें:
    जिस क्रम से उन्हें संसाधित किया जाता है, उसके आधार पर अंतर डेटाबेस से निर्धारित होता है। कुछ चीजें जो उस आदेश को प्रभावित करती हैं (आपके उदाहरण के लिए):

    • एक अनुक्रमित दृश्य के साथ क्वेरी को फिर से लिखा जा सकता है
    • क्या अनुक्रमित उपलब्ध हैं एक या दोनों कॉलम NUMBER और DATE को कवर करता है और उस अनुक्रमणिका में मौजूद किस क्रम में
    • आपके पूर्वानुमानों की अनुमानित चुनिंदा, जिसका मूल रूप से अनुमान लगाया गया अनुमानित प्रतिशत आपके वास्तविकता से मेल खाता है निम्न% अधिक संभावना अनुकूलक आपके सूचकांक को कुशलता से उपयोग करना है।
    • क्लस्टरिंग कारक (या जो भी नाम SQL सर्वर में है) यदि SQL सर्वर कारक क्वेरी लागत में यह कैसे करना है कि तालिका प्रविष्टियों के क्रम तालिका पंक्तियों के भौतिक क्रम के साथ संरेखित कैसे करते हैं। बेहतर संरेखण = उस सूचकांक के माध्यम से प्राप्त की गई पंक्तियों की ऊंची% की लागत कम कर देता है।

      अब, यदि आपके कॉलम में नंबर केवल हैं 156, 646 और वे काफी समान रूप से फैला रहे हैं, सूचकांक बेकार होगा एक पूर्ण स्कैन एक बेहतर विकल्प होगा। दूसरी ओर, यदि ये अद्वितीय क्रम संख्याएं हैं (एक अनूठी अनुक्रमणिका के आधार पर), तो अनुकूलक उस सूचक को चुन सकता है और वहां से क्वेरी को चलाता है। समान रूप से, अगर 1 जनवरी 2011 के पहले और दूसरे के बीच होने वाली पंक्तियों में पंक्तियों के एक छोटे से पर्याप्त% की संख्या होती है, तो DATE के साथ अग्रणी सूचकांक पर विचार किया जाएगा।

      या यदि आप आदेश शामिल करते हैं NUMBER, DATE द्वारा अन्य पैरामीटर समीकरण में आता है; सॉर्टिंग की लागत एक सूचकांक (NUMBER, DATE) अब ऑप्टिमाइज़र के लिए अधिक आकर्षक होगा, क्योंकि यह पंक्तियों को प्राप्त करने का सबसे कारगर तरीका नहीं हो सकता है, सॉर्टिंग (जो महंगा है) को छोड़ा जा सकता है।

      या, अगर आपकी क्वेरी में ग्राहक_आईडी पर एक अन्य तालिका में शामिल होना शामिल है (ग्राहक कहते हैं) और आपके पास customer.ssn पर फ़िल्टर भी होता है, फिर से समीकरण बदल जाता है, क्योंकि (क्योंकि आपने एक अच्छा काम किया है विदेशी कुंजियों और एक बैकिंग इंडेक्स) अब आपको NUMBER या DATE में अनुक्रमणिकाओं का उपयोग किए बिना, आपकी पहली तालिका में एक बहुत ही कुशल पहुंच पथ प्राप्त होगा। जब तक आपके पास केवल एक ग्राहक न हो और 10 मिलियन के सभी ऑर्डर हों ...

Comments