2011-07-15 15 views
7

पर क्वेरी बनाम हानि पर प्रदर्शन लाभ यह निर्धारित कैसे कर सकता है कि एक कॉलम अनुक्रमणित करके SELECT पर प्राप्त प्रदर्शन एक ही तालिका में INSERT पर प्रदर्शन हानि से अधिक होगा? क्या सूचकांक तालिका के आकार में "टिपिंग-पॉइंट" है जब सूचकांक अच्छा से ज्यादा नुकसान करता है?एसक्यूएल सर्वर 2008 इंडेक्स - INSERT/UPDATE

मेरे पास किसी भी समय 2-3 मिलियन पंक्तियों के साथ SQL Server 2008 में तालिका है। प्रत्येक बार जब टेबल पर एक सम्मिलित किया जाता है, तो उसके दो कॉलम का उपयोग करके एक ही टेबल पर एक लुकअप भी किया जाता है। मैं यह निर्धारित करने की कोशिश कर रहा हूं कि लुकअप में इस्तेमाल किए गए दो कॉलम में इंडेक्स जोड़ने के लिए फायदेमंद होगा या नहीं।

+3

शब्दों की मजेदार पसंद, क्योंकि किम्बर्ली ट्रिप के लेख को "[द टिपिंग पॉइंट] (http://www.sqlskills.com/BLOGS/KIMBERLY/category/The-Tipping-Point.aspx) कहा जाता है"। इसे इंडेक्स उपयोग निर्धारित करने के बारे में निश्चित पठन माना जाता है। –

+0

@ डीसीपी: thx, मैं एक नया अवतार ढूंढ रहा हूं :) –

+0

वाह। वास्तव में शब्दों की मजेदार पसंद! मैं निश्चित रूप से उस लेख को पढ़ रहा हूँ। इसे जोड़ने के लिए धन्यवाद। बेंचमार्किंग के लिए – TrailJon

उत्तर

4

की तरह सब कुछ एसक्यूएल से संबंधित, यह निर्भर करता है:

  • क्षेत्रों किस तरह वे कर रहे हैं? Varchar? इंट? दिनांक समय?
  • क्या टेबल पर अन्य अनुक्रमणिका हैं?
  • क्या आपको अतिरिक्त फ़ील्ड शामिल करने की आवश्यकता होगी?
  • क्लस्टर सूचकांक क्या है?
  • लेनदेन में कितनी पंक्तियां डाली/हटा दी गई हैं?

यह जानने का एकमात्र असली तरीका यह बेंचमार्क करना है। इंडेक्स (एसएस) को जगह में रखें और लगातार निगरानी करें, या ट्रेस चलाएं।

+1

+1 - यह जानने का एकमात्र ** सच ** तरीका है कि कोई अन्य अनुक्रमणिका मदद करता है या दर्द होता है। यह निर्धारित करने का कोई तरीका नहीं है कि सूत्र के माध्यम से - केवल एक क्रिस्टल बॉल मदद करेगा (मेरा अभी दुकान में है ...) –

0

यह आपके वर्कलोड और आपकी आवश्यकताओं पर निर्भर करता है। कभी-कभी डेटा एक बार लोड होता है और लाखों बार पढ़ता है, लेकिन कभी-कभी सभी लोड किए गए डेटा को कभी भी पढ़ा नहीं जाता है।

कभी-कभी पढ़ता है या लिखना निश्चित समय में पूरा होना चाहिए।

0

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

केस 2: यदि तालिका अत्यधिक गतिशील है और दैनिक आधार पर बहुत सी क्वेरीिंग नहीं की जाती है (उदाहरण: ऑडिटिंग उद्देश्यों के लिए उपयोग की जाने वाली लॉग टेबल) तो इंडेक्स लिखने को धीमा कर देगा।

यदि ऊपर दिए गए दो मामले सीमा के मामले हैं, तो तालिका बनाने पर इंडेक्स बनाने या इंडेक्स बनाने के लिए नहीं, इस बात पर निर्भर करता है कि विवाद में तालिका निकटतम किस मामले में आती है।

यदि इसे क्वेरी ट्यूनिंग सलाहकार के फैसले पर नहीं छोड़ दिया जाता है। सौभाग्य।

संबंधित मुद्दे