ডিফল্টরূপে নাল না নল?


41

মাইএসকিউএলে, কোনও ক্ষেত্রের প্রয়োজন না জেনে অবধি কি সর্বদা নাল ব্যবহার করা ভাল, বা Not Nullআপনি যদি না জেনেন কোনও ক্ষেত্রটি শূন্যস্থান ধারণ করে না তবে সর্বদা ব্যবহার করুন ? নাকি কিছু যায় আসে না?

আমি কয়েকটি ডিবিএমএসে জানি যে তারা যথাসম্ভব ব্যবহার করতে বলেছে Not Nullনাল স্ট্যাটাসটি সংরক্ষণের জন্য নালকে রেকর্ডে অতিরিক্ত বিট (বা বাইট?) প্রয়োজন হয়।


1
আপনি যে মডেলিং করছেন তার মানটির NULLযদি NULLব্যাখ্যা হয় তবেই আপনাকে অনুমতি দেওয়া উচিত ।
জামেশফিশার

উত্তর:


25

বেশিরভাগ ডিবিতে NOT NULLআপনি যে কারণে বক্তব্য রাখেন তার জন্য একটি কলাম সঞ্চিত ডেটার ক্ষেত্রে আরও দক্ষ এবং জিজ্ঞাসা এবং সূচিকরণে আরও দক্ষ হবে - সুতরাং আপনি যদি কোনও কলামে NULLs না চান তবে আপনাকে সেগুলি স্পষ্টভাবে অস্বীকার করা উচিত।

সামান্য পারফরম্যান্সের অন্তর্ভুক্তি হবে, যেহেতু অতিরিক্ত NOT NULLসীমাবদ্ধতাগুলি আপনি যে কোনও INSERT বা আপডেটের সাথে প্রভাবিত প্রতিটি সারিটির জন্য সম্ভাব্যভাবে যাচাই করা দরকার তবে বেশিরভাগ ডাটাবেস আপেক্ষিক লেখার হালকা এবং পঠন ভারী হওয়ায় এটি সম্ভবত উদ্বেগের বিষয় নয় (সামান্য অতিরিক্ত সময় নেওয়া কোনওভাবেই নজরে আসার সম্ভাবনা নেই কারণ এটি একটি সিপিইউ-বাউন্ড অপারেশন যেখানে বাকী সন্নিবেশ / আপডেটের অপারেশনটি আইও-আবদ্ধ হবে এবং আরও অনেক বেশি গুরুত্বপূর্ণ বোতল-ঘাড়) এবং এটি আপনাকে কিছুটা "মুক্ত" দেয় "ডেটা পরীক্ষা করা যাতে আপনার কোড (বা অন্যান্য লোকের কোড) দুর্ঘটনাক্রমে NULL গুলি রাখতে পারে না যেখানে অন্যান্য কোড তাদের আশা করে না এবং তাই তাদের উপস্থিতিতে ভুল ফলাফল দিতে পারে।

সম্পাদনা: যেমনটি পিটার তার মন্তব্যে উল্লেখ করেছেন উপরেরটি একটি সাধারণতা এবং এটি সমস্ত ডিএমবিএসের পক্ষে সত্য নয় , যদিও আমি নিশ্চিত যে এটি মাইএসকিএল এবং এমএসকিএল-এর জন্য করে। ক্ষেত্রের অন্যান্য জটিলতায় স্পার্স টেবিলের মতো বৈশিষ্ট্যগুলি অন্তর্ভুক্ত থাকতে পারে (উদাহরণস্বরূপ এমএসএসকিউএল ২০০ 2008 হিসাবে প্রয়োগ করা হয়েছে) যা কমনীয় কলামগুলির কার্যকারিতা গতি পরিবর্তন করে (নয়)।


8
পোস্টগ্র্রেএসকিউএলে এটি অগত্যা সত্য নয়। নাল কলামগুলি স্থান বাঁচায়, যা গতি উন্নত করতে পারে এবং প্রক্রিয়াকরণের সময় একই রকম হওয়া উচিত।
পিটার আইসেন্ট্রাট

4
এটি ওরাকলের ক্ষেত্রেও সত্য নয়। এছাড়াও, মাইএসকিএল-এর বিপরীতে, ওরাকল নালকে সূচি দেয় না যাতে আপনি এগুলি ব্যবহার করে আপনার সূচির আকার হ্রাস করতে পারেন। স্ট্যাকওভারফ্লো.com
লেইফ রিফেল

8

আপনার স্কিমা নকশা এবং অ্যাপ্লিকেশন প্রয়োজনীয়তা এই সিদ্ধান্ত গাইড করতে দেওয়া উচিত। পারফরম্যান্স পার্থক্য সম্ভবত বেশিরভাগ ক্ষেত্রেই লক্ষণীয় নয়।


3
আবারও, নিশ্চিতরূপে জানার সর্বোত্তম উপায় হ'ল প্রোফাইলিং এবং পরীক্ষা।
jcolebrand

আমি এই ধরনের বিস্তৃত বিবৃতিগুলির সাথে সতর্কতা অবলম্বন করব - আপনি যদি কিছু ইটিএল প্রক্রিয়াটির মাধ্যমে একটি রাতে 10 মিলিয়ন সারি লিখতে থাকেন এবং সেই টেবিলটিতে নট নাল বাঁধা ক্ষেত্রগুলির একটি গুচ্ছ থাকে, আপনি পারফরম্যান্সের প্রভাবগুলি দেখতে পাবেন।
স্কটচের

1
+1: সম্ভবত এটি সমস্ত অ্যাপ্লিকেশনের ক্ষেত্রে সত্য নয়, তবে আমি যা করছি তার জন্য সামান্য / সঠিক ডেটা পাওয়ার জন্য কিছু স্থান বাঁচানো বা কিছু গতি হারানোর চেয়ে গুরুত্বপূর্ণ।
জেপি
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.