अधिकांश DBs NOT NULLमें एक कॉलम आपके द्वारा बताए गए कारण के लिए संग्रहीत डेटा के संदर्भ में अधिक कुशल होगा, और क्वेरी और इंडेक्स के लिए भी अधिक कुशल होगा - इसलिए जब तक आप किसी कॉलम में NULL को अनुमति नहीं देना चाहते हैं, तब तक आप उन्हें स्पष्ट रूप से अस्वीकार नहीं कर सकते।
एक मामूली प्रदर्शन निहितार्थ होगा, क्योंकि अतिरिक्त NOT NULLबाधाओं को संभावित रूप से प्रत्येक पंक्ति के लिए जांचना होगा जिसे आप किसी भी INSERT या UPDATE से प्रभावित करते हैं, लेकिन जैसा कि अधिकांश डेटाबेस सापेक्ष लेखन-प्रकाश और पढ़ने में भारी हैं, यह संभवतः एक चिंता का विषय नहीं है (थोड़ा) अतिरिक्त समय किसी भी तरह से ध्यान देने योग्य होने की संभावना नहीं है क्योंकि यह एक सीपीयू-बाउंड ऑपरेशन है जहां बाकी सम्मिलित / अपडेट ऑपरेशन आईओ-बाउंड और बहुत अधिक महत्वपूर्ण बोतल-गर्दन होगा) और यह आपको कुछ "मुफ्त" देता है "डेटा की जाँच इसलिए आपका कोड (या अन्य लोगों का कोड) गलती से NULLs नहीं डाल सकता है जहाँ अन्य कोड उनसे अपेक्षा नहीं कर रहा है और इसलिए उनकी उपस्थिति में गलत परिणाम दे सकता है।
संपादित करें: जैसा कि पीटर अपनी टिप्पणी में बताते हैं कि उपरोक्त एक सामान्यता है और सभी DMBS के लिए सही नहीं हो सकता है , हालांकि मुझे पूरा यकीन है कि यह mysql और mssql के लिए है। क्षेत्र की अन्य जटिलताओं में विरल तालिकाओं (उदाहरण के लिए MSSQL 2008 के रूप में कार्यान्वित) जैसी विशेषताएं शामिल हो सकती हैं, जो अशक्त स्तंभों (नहीं) के प्रदर्शन की गतिशीलता को बदल देगी।
NULLयदिNULLआप मॉडलिंग कर रहे हैं, तो आपके लिए केवल और अगर मूल्य की व्याख्या है, तो आपको अनुमति देनी चाहिए ।