2012-05-17 11 views
20

लोड होने के दौरान डिफ़ॉल्ट मान के साथ कॉलम जोड़ने का सबसे अच्छा तरीका एक तालिका में कॉलम जोड़ते समय जिसमें डिफ़ॉल्ट मान होता है और शून्य की बाधा नहीं होती है। क्या डेटाबेस एक लोड के तहत चरणों में इसे एक कथन के रूप में चलाने या इसे तोड़ने के लिए बेहतर है।लोड

ALTER TABLE user ADD country VARCHAR2(4) DEFAULT 'GB' NOT NULL 

बनाम

ALTER TABLE user ADD country VARCHAR2(2) 
UPDATE user SET country = 'GB' 
COMMIT 
ALTER TABLE user MODIFY country DEFAULT 'GB' NOT NULL 
+1

आपकी उपयोगकर्ता तालिका में कितनी पंक्तियां मौजूद हैं? उपयोगकर्ता तालिका में –

+0

10,000 पंक्तियां मौजूद हैं। –

+0

क्या आप प्रदर्शन को माप सकते हैं? – Kiquenet

उत्तर

17

प्रदर्शन आपके द्वारा उपयोग किए जाने वाले ओरेकल संस्करण पर निर्भर करता है। वैसे भी ताले उत्पन्न होते हैं।

यदि संस्करण < = ओरेकल 11.1 तब # 1 # 2 जैसा ही होता है। वैसे भी धीमा है। ओरेकल 11.2 के साथ शुरुआत, ओरेकल ने पहले कथन के लिए एक महान अनुकूलन प्रस्तुत किया (एक आदेश यह सब कर रहा है)। आपको कमांड बदलने की जरूरत नहीं है - ओरेकल बस अलग-अलग व्यवहार करता है। यह प्रत्येक भौतिक पंक्ति को अद्यतन करने के बजाय केवल डेटा डिक्शनरी में डिफ़ॉल्ट मान संग्रहीत करता है।

लेकिन मैं यह भी कहना है कि मैं (Oracle 11.2.0.1 में) इस सुविधा से संबंधित अतीत

  • पारंपरिक आयात की विफलता में कुछ कीड़े का सामना करना पड़ा है, तो निर्यात प्रत्यक्ष = Y
  • साथ किया गया था है,
  • मर्ज बयान मुझे लगता है यह मुद्दों वर्तमान संस्करण 11.2.0 में तय कर रहे हैं जैसे तालिकाओं

का उपयोग करके क्वेरी में एक ORA-600 [13013] (आंतरिक ओरेकल त्रुटि)

  • एक प्रदर्शन समस्या फेंक कर सकते हैं। 3, इसलिए मैं इस सुविधा का उपयोग करने की सिफारिश कर सकता हूं।

  • 0

    कुछ समय पहले हम एक ही समस्या के संभावित समाधानों का मूल्यांकन किया है। हमारी परियोजना पर हमें टेबल पर सभी इंडेक्स को हटाना था, बदलाव करना और इंडेक्स को वापस बहाल करना था।

    0

    यदि आपके सिस्टम को तालिका का उपयोग करने की आवश्यकता है तो DBMS_Redefinition वास्तव में आपकी एकमात्र पसंद है।