2010-06-27 10 views
6

हालांकि मैं समझता हूं कि एक अद्वितीय कॉलम पर एक इंडेक्स रखना बहुत ही विश्वसनीय है - मूल्य टक्कर के लिए आसानी से और कुशलतापूर्वक जांच करने के लिए, मुझे लगता है कि यह निर्दिष्ट करने के लिए प्रोग्रामर पर होना चाहिए कि एक अद्वितीय फ़ील्ड कॉलम इंडेक्स है या नहीं नहीं, आकार-बनाम गति-अनुकूलन के संबंध में।MySQL: क्या एक 'अद्वितीय' कॉलम फ़ील्ड इंडेक्स को इंगित करता है, और यदि ऐसा है, तो क्यों?

जहां तक ​​मैं समझता हूं कि MySQL स्वचालित रूप से एक तालिका कॉलम को अनुक्रमित करता है जिसे अद्वितीय के रूप में निर्दिष्ट किया गया है। ऐसा है क्या?

क्या कोई कारण है कि MySQL प्रतीत होता है कि इंडेक्स के बिना अद्वितीय कॉलम नहीं हो सकते हैं? हां, प्रत्येक मूल्य सम्मिलन/अद्यतन ओ (number_of_rows) ऑपरेशन होगा बिना किसी, लेकिन जैसा कि मैंने कहा, प्रोग्रामर को निर्णय के साथ कर नहीं लगाया जाना चाहिए?

बस उत्सुक!

उत्तर

11

जहां तक ​​मैं समझता हूं कि MySQL स्वचालित रूप से एक तालिका कॉलम को अनुक्रमित करता है जिसे अद्वितीय के रूप में निर्दिष्ट किया गया है। ऐसा है क्या?

हां। हालांकि यह आवश्यक नहीं है 'स्वचालित', यह निहित है। UNIQUEइंडेक्स के टाइप करें, इसलिए निश्चित रूप से कॉलम अनुक्रमित है।

क्या कोई कारण है कि MySQL प्रतीत होता है कि इंडेक्स के बिना अद्वितीय कॉलम नहीं हो सकते हैं?

क्योंकि यह मूर्खतापूर्ण होगा MySQL अद्वितीय बाधा बनाए रखने के लिए प्रत्येक INSERT/UPDATE पर एक पूर्ण तालिका स्कैन करने के लिए।

संपादित:

हे हाँ, हर मूल्य प्रविष्टि/अद्यतन किया जाएगा (number_of_rows) एक के बिना आपरेशन, लेकिन जैसे मैंने कहा, प्रोग्रामर फैसले से कर नहीं लगाया जाना चाहिए?

प्रोग्रामर डेटा स्टोरेज परत के बाहर मूल डेटा अखंडता को मैन्युअल रूप से लागू क्यों करना चाहता है? मैं समझता हूं कि आप इसके साथ कहां जा रहे हैं, लेकिन तथ्य यह है कि एक सूचकांक संभवतः को को चोट पहुंच सकता है (यह थोड़ा और अधिक जगह लेता है) - इसलिए वास्तव में विचार करने का निर्णय नहीं है।

+1

वास्तव में, डीबीएमएस का उपयोग करने का एक कारण डेटा अखंडता को बनाए रखना है। –

+0

डेटा अखंडता और डेटा अनुक्रमण, भले ही संबंधित, दो ऑर्थोगोनल अवधारणाएं हैं, नहीं? – amn

+1

@ एएमएन, हाँ, मुझे विश्वास है कि वे हैं। और अधिकांश समय डेटा अखंडता का समाधान इस विशेष मामले के रूप में इतना सुरुचिपूर्ण नहीं है। कई बार यह शारीरिक रूप से जांचने के लिए आता है कि वहां मौजूद डेटा वास्तव में वहां है। बेशक यह आरडीएमएस, विदेशी कुंजी, कुंजी बाधाओं आदि के लिए समर्थन पर भी निर्भर करता है। –

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