> ## Documentation Index
> Fetch the complete documentation index at: https://clickhouse.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# إعدادات الجلسة optimize_trivial_*

> إعدادات جلسة ClickHouse في المجموعة المُولَّدة optimize_trivial_*.

export const SettingsInfoBlock = ({type, default_value, changeable_without_restart}) => {
  return <div className="not-prose" style={{
    display: "flex",
    flexWrap: "wrap",
    alignItems: "baseline",
    columnGap: "0.5rem",
    rowGap: "0.125rem",
    margin: "0.375rem 0",
    fontSize: "0.8125rem",
    lineHeight: "1.125rem"
  }}>
      <div style={{
    fontWeight: 600,
    opacity: 0.72
  }}>النوع</div>
      <div style={{
    overflowWrap: "anywhere"
  }}>{type}</div>
      <div style={{
    fontWeight: 600,
    opacity: 0.72,
    marginInlineStart: "0.5rem"
  }}>القيمة الافتراضية</div>
      <div style={{
    overflowWrap: "anywhere"
  }}>{default_value}</div>
      {changeable_without_restart && <div style={{
    fontWeight: 600,
    opacity: 0.72,
    marginInlineStart: "0.5rem"
  }}>
          يمكن تغييره دون إعادة التشغيل
        </div>}
      {changeable_without_restart && <div style={{
    overflowWrap: "anywhere"
  }}>
          {changeable_without_restart}
        </div>}
    </div>;
};

export const ExperimentalBadge = () => {
  return <div className="experimentalBadge">
            <div className="experimentalIcon">
            <svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
                <path strokeWidth="1.25" d="M5.5 2H10.5" stroke="currentColor" strokeLinecap="round" strokeLinejoin="round" />
                <path strokeWidth="1.25" d="M9.50015 2V6.19625L13.4283 12.7425C13.4738 12.8183 13.4985 12.9049 13.4996 12.9934C13.5008 13.0818 13.4785 13.169 13.435 13.246C13.3914 13.323 13.3283 13.3871 13.2519 13.4317C13.1755 13.4764 13.0886 13.4999 13.0002 13.5H3.00015C2.91164 13.5 2.8247 13.4766 2.74822 13.432C2.67174 13.3874 2.60847 13.3233 2.56487 13.2463C2.52126 13.1693 2.49889 13.082 2.50004 12.9935C2.50119 12.905 2.52582 12.8184 2.5714 12.7425L6.50015 6.19625V2" stroke="currentColor" strokeLinecap="round" strokeLinejoin="round" />
                <path strokeWidth="1.25" d="M4.47656 9.56754C5.30344 9.41254 6.47656 9.47942 7.99969 10.25C10.0153 11.2707 11.4216 11.0569 12.2184 10.7282" stroke="currentColor" strokeLinecap="round" strokeLinejoin="round" />
            </svg>
        </div>
            ميزة تجريبية. <u><a href="/docs/docs/beta-and-experimental-features#experimental-features">تعرّف على المزيد.</a></u>
        </div>;
};

هذه الإعدادات متوفّرة في [system.settings](/docs/ar/reference/system-tables/settings)، وهي مُولَّدة تلقائيًا من [المصدر](https://github.com/ClickHouse/ClickHouse/blob/master/src/Core/Settings.cpp).

<div id="optimize_trivial_approximate_count_query">
  ## optimize\_trivial\_approximate\_count\_query
</div>

<SettingsInfoBlock type="Bool" default_value="0" />

استخدم قيمة تقديرية لتحسين العدّ البسيط في وحدات التخزين التي تدعم هذا النوع من التقدير، مثل EmbeddedRocksDB.

القيم الممكنة:

* 0 — التحسين معطّل.
  * 1 — التحسين مفعّل.

<div id="optimize_trivial_count_query">
  ## optimize\_trivial\_count\_query
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

يُفعّل أو يعطّل تحسين الاستعلام البسيط `SELECT count() FROM table` باستخدام البيانات الوصفية من MergeTree. إذا كنت بحاجة إلى استخدام أمان على مستوى الصفوف، فعطّل هذا الإعداد.

القيم الممكنة:

* 0 — التحسين معطّل.
  * 1 — التحسين مفعّل.

انظر أيضًا:

* [optimize\_functions\_to\_subcolumns](/docs/ar/reference/settings/session-settings/optimize#optimize_functions_to_subcolumns)

<div id="optimize_trivial_count_with_sparsity_filter">
  ## optimize\_trivial\_count\_with\_sparsity\_filter
</div>

<ExperimentalBadge />

<SettingsInfoBlock type="Bool" default_value="0" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.7"},{"label": "0"},{"label": "إعداد جديد (تجريبي) لتقديم `SELECT count() FROM t WHERE <pred>` استنادًا إلى `num_defaults` \/ `num_rows` لكل عمود والمُسجَّلين في `serialization.json` عندما يقسم `<pred>` الصفوف إلى قيم افتراضية وغير افتراضية."}]}]} />

يوسّع تحسين [optimize\_trivial\_count\_query](/docs/ar/reference/settings/session-settings/optimize-trivial#optimize_trivial_count_query) ليشمل
الاستعلامات من الشكل `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\_count\_query](/docs/ar/reference/settings/session-settings/optimize-trivial#optimize_trivial_count_query)

<div id="optimize_trivial_group_by_limit_query">
  ## optimize\_trivial\_group\_by\_limit\_query
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.5"},{"label": "1"},{"label": "إعداد جديد يحدّ من التجميع إلى حدّ أقصى يبلغ `LIMIT` من المفاتيح المميزة لاستعلامات `SELECT key_expr FROM t GROUP BY key_expr LIMIT n`."}]}]} />

يؤدي هذا الإعداد إلى تمكين تحسين الاستعلام البسيط `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 — التحسين مفعّل.

<div id="optimize_trivial_insert_select">
  ## optimize\_trivial\_insert\_select
</div>

<SettingsInfoBlock type="Bool" default_value="0" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.7"},{"label": "0"},{"label": "هذا التحسين غير منطقي في كثير من الحالات."}]}]} />

تحسين استعلام 'INSERT INTO table SELECT ... FROM TABLES' البسيط
