T. على سبيل المثال، يمكن لعمود من النوع Nullable(Int8) تخزين قيم من نوع Int8، بينما تُخزَّن NULL في الصفوف التي لا تحتوي على قيمة.
لا يمكن أن يكون T أيًا من أنواع البيانات المركبة التالية:
ومع ذلك، يمكن لأنواع البيانات المركبة أن تتضمن قيمًا من النوع Nullable، مثل Array(Nullable(Int8)) أو Tuple(Nullable(String), Nullable(Int64)).
لا يمكن تضمين حقل من النوع Nullable في فهارس الجدول.
تكون NULL هي default value لأي نوع Nullable، ما لم يُحدَّد خلاف ذلك في إعدادات خادم ClickHouse.
ميزات التخزين
لتخزين قيم النوعNullable في عمود بجدول، يستخدم ClickHouse ملفًا منفصلًا لأقنعة NULL بالإضافة إلى الملف العادي الذي يحتوي على القيم. وتُمكّن البيانات الموجودة في ملف الأقنعة ClickHouse من التمييز بين NULL وdefault value لنوع البيانات المقابل في كل صف من صفوف الجدول. وبسبب هذا الملف الإضافي، يستهلك العمود Nullable مساحة تخزين إضافية مقارنةً بعمود عادي مماثل.
يؤثر استخدام
Nullable سلبًا في الأداء في الغالب، لذا ضع ذلك في الحسبان عند تصميم قواعد البيانات لديك.العثور على NULL
يمكن العثور على قيمNULL في عمود باستخدام العمود الفرعي null من دون قراءة العمود بأكمله. ويُرجع بايت قناع NULL المخزَّن: 0 إذا كانت القيمة المقابلة موجودة، وبايتًا غير صفري، وهو 1 في صورته المعيارية، إذا كانت NULL. استخدم isNull عندما تكون هناك حاجة إلى 0 أو 1 على وجه التحديد.
مثال
Query
Response