UNIQUE
बाधा या PRIMARY KEY
का निर्माण UNIQUE
btree अनुक्रमणिका के निर्माण में परिणाम। जब भी कोई रिकॉर्ड INSERT
एड, UPDATE
एड, या DELETE
डी किसी भी अनुक्रमित कॉलम को बदला जाता है तो यह अनुक्रमणिका अद्यतन होनी चाहिए। यदि कोई अनुक्रमित कॉलम नहीं बदला जाता है तो हॉट (हीप-केवल टुपल ऑप्टिमाइज़ेशन) इंडेक्स अपडेट में ला सकता है और इससे बच सकता है, खासकर यदि आपके पास पृष्ठों में स्थान बनाने के लिए गैर-डिफ़ॉल्ट FILLFACTOR
है।
डालने/अपडेट पर इंडेक्स अपडेट समय लगता है, इसलिए UNIQUE
अनुक्रमित तालिका में डालने से किसी भी अद्वितीय इंडेक्स या प्राथमिक कुंजी के बिना किसी को डालने से धीमा होता है। UPDATE
के लिए भी यह सच है, लेकिन यदि इंडेक्स को टुपल को अपडेट करने के लिए उपयोग किया जाता है (और एक सेक्स्कैन से बचें) तो यह आम तौर पर इंडेक्स नहीं होने पर नेट जीत होती है। यदि टुपल को खोजने के लिए एक अलग इंडेक्स का उपयोग किया जाता है, या यदि एक सेक्स्कैन तेज है (जैसा कि छोटे टेबल पर सत्य है) तो INSERT
की तरह इंडेक्स का कोई लाभ नहीं है और केवल उस ऑपरेशन के लिए इसे अपडेट करने के लिए लिखने की लागत लगती है। यह सभी इंडेक्स के लिए सच है, न केवल UNIQUE
इंडेक्स।
प्रत्येक INSERT
या एक UNIQUE
अनुक्रमित स्तंभ पर UPDATE
सत्यापित करने के लिए कुंजी एक मौजूदा कुंजी से विरोध नहीं करता एक सूचकांक देखने की आवश्यकता है। अस्पष्ट स्मृति से यह सूचकांक में नई प्रविष्टि डालने की प्रक्रिया के साथ संयुक्त है, लेकिन मैं वहां 100% निश्चित नहीं हूं।
AFAIK DELETE
सूचकांक को प्रभावित नहीं करता है। यह ढेर में टुपल के लिए बस xmax
सेट करता है।
सूचकांक अपडेट हो जाता है भले ही ROLLBACK
सफल प्रविष्टि या UNIQUE
अवरोधित कॉलम पर अपडेट के बाद किसी त्रुटि के साथ लेनदेन या लेन-देन बंद हो। VACUUM
ऑटोवाक्यूम द्वारा काम बाद में मृत सूचकांक प्रविष्टियों को साफ करता है। Concurrency Control in the PostgreSQL manual देखें।
यह सब PRIMARY KEY
का भी सच है, जिसे UNIQUE
अनुक्रमणिका का उपयोग करके भी लागू किया गया है।
PRIMARY KEY
और UNIQUE
बाधाओं द्वारा उपयोग किए गए इंडेक्स समेत प्रत्येक अनुक्रमणिका, लेखन प्रदर्शन पर जुर्माना लगाती है।
स्रोत
2012-11-02 07:12:54
उत्तर के लिए धन्यवाद। यह बहुत अच्छी तरह से समझाया गया था। क्या प्राथमिक कुंजी रिकॉर्ड के सॉर्टिंग ऑर्डर को भी प्रभावित करती है? यह बहुत अच्छा होगा अगर आप मेरे अन्य प्रश्न का उत्तर यहां दे सकते हैं: http://stackoverflow.com/questions/13190720/what-is-the-order-of-records-when-the-primary-key-is- निर्दिष्ट-ऑन-ए-समूह के-col –