2008-09-24 13 views
10

अगर मैं एक प्रश्न की तरह,एक सूचकांक < or > MySQL प्रश्न है?

DELETE FROM table WHERE datetime_field < '2008-01-01 00:00:00' 

datetime_field स्तंभ अनुक्रमित मदद कर रहा है है? यानी समानता (या असमानता) परीक्षण का उपयोग करते समय सूचकांक केवल उपयोगी होता है, या आदेशित तुलना करते समय यह उपयोगी होता है?

(बेहतर इस क्वेरी को क्रियान्वित करने, टेबल पुनः बनाने के बिना के लिए सुझाव भी ठीक होगा!)

उत्तर

11

शायद। आम तौर पर, यदि ऐसी कोई अनुक्रमणिका है, तो क्वेरी पर कोई "बेहतर" अनुक्रमणिका नहीं होने पर यह उस अनुक्रमणिका पर एक श्रेणी स्कैन का उपयोग करेगी। हालांकि, अगर ऑप्टिमाइज़र निर्णय लेता है कि सीमा बहुत बड़ी हो जाएगी (यानी पंक्तियों में से 1/3 कहें, तो इसमें शायद शामिल है), यह शायद इंडेक्स का उपयोग नहीं करेगा, क्योंकि एक टेबल स्कैन होने की संभावना है और तेज।

एक विशिष्ट मामले में अपने निर्णय को निर्धारित करने के लिए एक्सप्लाइन (एक चयन पर; आप एक डिलीप्ले का खुलासा नहीं कर सकते) का उपयोग करें। यह क्या सीमा है कि आप निर्दिष्ट कर रहे है पर

  • निर्भर करने के लिए कितने पंक्तियों वहाँ मेज
  • में हैं होने की संभावना है
  • और क्या कहां खंड में निर्दिष्ट है। यदि कोई अन्य इंडेक्स है जो "बेहतर दिखता है" तो यह एक इंडेक्स के रेंज स्कैन का उपयोग नहीं करेगा।
+2

शायद यह एक अतिरिक्त प्रश्न होना चाहिए की जरूरत नहीं है, लेकिन वहाँ एक सरल जवाब (या MySQL प्रलेखन का हिस्सा के संदर्भ में) बताते हैं कि कैसे अनुकूलक निर्णय करता है सीमा के बारे में बहुत बड़ा है? जहां मामले में विशिष्ट मामले में कुछ और नहीं है। –

1

यह एक साथ जांच करता तालिका से चयन वर्णन ...

2

एक सूचकांक डेटाटाइम फ़ील्ड पर निश्चित रूप से तिथि सीमा आधारित खोजों में सहायता मिलेगी। हम उन्हें अपने डेटाबेस में हर समय उपयोग करते हैं और क्वेरी इंडेक्स के बिना धीरे-धीरे धीमे होते हैं।

4

MySQL Reference manual से:

एक बी पेड़ सूचकांक भाव का उपयोग करने वाले में स्तंभ तुलना के लिए इस्तेमाल किया जा सकता =,>,> =, <, < =, या ऑपरेटरों के बीच।

बड़ी संख्या में पंक्तियों के लिए, तालिका स्कैन के माध्यम से पेड़ सूचकांक के माध्यम से पंक्तियों को देखने के लिए यह बहुत तेज हो सकता है। लेकिन जैसा कि अन्य उत्तरों बताते हैं, MySQL के निर्णय को जानने के लिए EXPLAIN का उपयोग करें।

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