कुछ लोग NULL
avoid से बचने की कोशिश करते हैं मान, तर्क का दावा करना भ्रमित करने वाला होगा।
मैं उन लोगों में से नहीं हूं। NULL
बिना डेटा वाले कॉलम के लिए मान ठीक हैं। वे निश्चित रूप से "खाली" कॉलम को स्टोर करने का सबसे सस्ता तरीका हैं - डिस्क स्थान के साथ-साथ प्रदर्शन के लिए (मुख्य प्रभाव छोटे टेबल और इंडेक्स हैं):
- क्या PostgreSQL में NULL का उपयोग अभी भी हेडर में NULL बिटमैप का उपयोग नहीं करता है?
- क्या postgresql में कॉलम पर "NOT NULL" सेट करने से प्रदर्शन बढ़ता है?
- क्या अशक्त स्तंभ अतिरिक्त स्थान घेरते हैं PostgreSQL में?
एक बार जब आप समझ जाते हैं NULL
. की प्रकृति मूल्यों, उनसे बचने का कोई कारण नहीं है। पोस्टग्रेज एनयूएलएल से निपटने के लिए कई प्रकार के कार्य प्रदान करता है। colaesce()
, nullif()
, concat()
, concat_ws()
, ...
आम तौर पर, जहां तक प्रदर्शन . का संबंध है संबंधित है, एक पूर्ण बाधा नहीं एक जांच बाधा . को मात देता है और दोनों ने ट्रिगर . को हराया एक लॉग शॉट द्वारा। लेकिन साधारण ट्रिगर भी सस्ते होते हैं। एक NOT NULL
की लागत बाधा कुछ भी नहीं के बगल में है। साथ ही, ये सभी केवल लिखने के संचालन को प्रभावित करते हैं, लेकिन अधिकांश अनुप्रयोगों में रीड ऑपरेशन हावी होते हैं।
प्रदर्शन पर सबसे अधिक प्रासंगिक प्रभाव (उप-इष्टतम सूचकांक और क्वेरी को छोड़कर) इसलिए आकार . है तालिकाओं और सूचकांकों की संख्या या, अधिक महत्वपूर्ण बात, प्रति डेटा पृष्ठ पर टुपल्स की संख्या . अधिकांश उपयोग के मामलों के लिए बड़े टुपल्स धीमे प्रदर्शन की ओर ले जाते हैं। किसी क्वेरी को संतुष्ट करने के लिए पढ़ने वाले डेटा पृष्ठों की संख्या तदनुसार बढ़ जाती है। उपलब्ध कैश मेमोरी पहले संतृप्त होती है।
मेरे पास बेंचमार्क तैयार नहीं है, लेकिन फिर भी अपने विशेष परिवेश के लिए परीक्षण करना सबसे अच्छा है। ये अंगूठे के सिर्फ सरल नियम हैं। वास्तविकता बहुत अधिक जटिल है।