optimize_trivial_approximate_count_query
- 0 — التحسين معطّل.
- 1 — التحسين مفعّل.
optimize_trivial_count_query
SELECT count() FROM table باستخدام البيانات الوصفية من MergeTree. إذا كنت بحاجة إلى استخدام أمان على مستوى الصفوف، فعطّل هذا الإعداد.
القيم الممكنة:
- 0 — التحسين معطّل.
- 1 — التحسين مفعّل.
optimize_trivial_count_with_sparsity_filter
SELECT count() FROM t WHERE col <op> const، حيث تؤدي <op> const
إلى تقسيم الصفوف بدقة إلى القيم الافتراضية وغير الافتراضية للعمود col. وعندها يُستمدّ العدد
من العدّادات num_defaults / num_rows لكل عمود التي يحتفظ بها MergeTree بالفعل
في serialization.json، من دون فحص البيانات.
الأنماط المتعرَّف عليها:
col = default(col)/col != default(col)لـInt*/UInt*وString/FixedStringوDate/DateTime/DateTime64وDecimal*وUUIDوIPv4/IPv6.IS NULL/IS NOT NULLعلى الأعمدةNullable.empty(col)/notEmpty(col)على أعمدةString.col = true/col != trueعلى أعمدةBool.col > 0وcol >= 1وcol < 1وcol <= 0على أعمدة الأعداد الصحيحة غير الموقَّعة.col/NOT colمباشرةً على أعمدةInt*وUInt*وBool(اختبار القيمة المنطقية).
Float* أو Enum* أو Nullable أو LowCardinality
أو الأنواع المركبة (Tuple وArray وMap و…) — وبالنسبة إلى هذه الأنواع، يُستمدّ العدد من
مسار الفحص العادي.
لكي يسري ذلك، يجب أن يكون العدّاد num_defaults لكل part دقيقًا. فعِّل إعداد الجدول في MergeTree
compute_exact_num_defaults_for_sparse_columns على الجدول الهدف قبل
عمليات insert وmerges. أمّا الـ parts المكتوبة من دونه فتُستبعَد بصمت من إعادة الكتابة هذه، لذا
فإن تفعيل optimize_trivial_count_with_sparsity_filter وحده ليس كافيًا.
بالنسبة إلى أنماط IS NULL / IS NOT NULL على أعمدة Nullable، يجب أيضًا أن تكون للعمود
مدخلة num_defaults في serialization.json، وهذا لا يحدث إلا عندما يكون إعداد الجدول في MergeTree
nullable_serialization_version مضبوطًا على allow_sparse وقت insert /
merge. مع القيمة الافتراضية basic، لا تحصل أعمدة Nullable على أي مدخلة لكل عمود، لذلك
لا يُطبَّق هذا التحسين بصمت.
القيم الممكنة:
- 0 — التحسين معطّل.
- 1 — التحسين مفعّل.
optimize_trivial_group_by_limit_query
SELECT key_expr FROM table GROUP BY key_expr LIMIT n أو تعطيله (من دون دوال تجميع في الإسقاط، ومن دون بنود HAVING/ORDER BY/LIMIT BY/window، ومن دون معدِّلات GROUP BY) وذلك عبر تعيين max_rows_to_group_by = n + offset وgroup_by_overflow_mode = 'any'. ويتوقف التجميع بمجرد إنتاج n + offset من المفاتيح المميزة.
يُلغى هذا التحسين عندما يكون المستخدم قد عيّن group_by_overflow_mode صراحةً إلى قيمة غير any (للحفاظ على سلوك throw/break الذي حدّده صراحةً)، وكذلك عندما يكون قد عيّن مسبقًا قيمة أكثر تقييدًا لـ max_rows_to_group_by (إذ يصبح التحسين عندئذٍ بلا تأثير).
القيم الممكنة:
- 0 — التحسين معطّل.
- 1 — التحسين مفعّل.