> ## 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.

# force_* 会话设置

> ClickHouse 中 force_* 自动生成分组下的会话设置。

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>;
};

这些设置可在 [system.settings](/docs/zh/reference/system-tables/settings) 中查看，并由 [源代码](https://github.com/ClickHouse/ClickHouse/blob/master/src/Core/Settings.cpp) 自动生成。

<div id="force_aggregate_partitions_independently">
  ## force\_aggregate\_partitions\_independently
</div>

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

在适用的情况下强制使用该优化，即使启发式规则判断不使用它

<div id="force_aggregation_in_order">
  ## force\_aggregation\_in\_order
</div>

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

该设置由服务器自身使用，用于支持分布式查询。请勿手动更改，否则会破坏正常运行。 (在分布式聚合期间，强制远程节点使用按顺序聚合。)

<div id="force_data_skipping_indices">
  ## force\_data\_skipping\_indices
</div>

如果传入的数据跳过索引未被使用，则禁止查询执行。

请看以下示例：

```sql theme={null}
CREATE TABLE data
(
    key Int,
    d1 Int,
    d1_null Nullable(Int),
    INDEX d1_idx d1 TYPE minmax GRANULARITY 1,
    INDEX d1_null_idx assumeNotNull(d1_null) TYPE minmax GRANULARITY 1
)
Engine=MergeTree()
ORDER BY key;

SELECT * FROM data_01515;
SELECT * FROM data_01515 SETTINGS force_data_skipping_indices=''; -- query will produce CANNOT_PARSE_TEXT error.
SELECT * FROM data_01515 SETTINGS force_data_skipping_indices='d1_idx'; -- query will produce INDEX_NOT_USED error.
SELECT * FROM data_01515 WHERE d1 = 0 SETTINGS force_data_skipping_indices='d1_idx'; -- Ok.
SELECT * FROM data_01515 WHERE d1 = 0 SETTINGS force_data_skipping_indices='`d1_idx`'; -- Ok (example of full featured parser).
SELECT * FROM data_01515 WHERE d1 = 0 SETTINGS force_data_skipping_indices='`d1_idx`, d1_null_idx'; -- query will produce INDEX_NOT_USED error, since d1_null_idx is not used.
SELECT * FROM data_01515 WHERE d1 = 0 AND assumeNotNull(d1_null) = 0 SETTINGS force_data_skipping_indices='`d1_idx`, d1_null_idx'; -- Ok.
```

<div id="force_grouping_standard_compatibility">
  ## force\_grouping\_standard\_compatibility
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "22.9"},{"label": "1"},{"label": "使 GROUPING 函数的返回值与 SQL 标准及其他 DBMS 一致"}]}]} />

使 GROUPING 函数在参数未用作聚合键时返回 1

<div id="force_index_by_date">
  ## force\_index\_by\_date
</div>

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

如果查询不能利用日期索引，则禁用查询执行。

适用于 MergeTree 家族中的表。

如果 `force_index_by_date=1`，ClickHouse 会检查查询是否包含可用于限制数据范围的日期键条件。如果没有合适的条件，则会抛出异常。不过，它不会检查该条件是否减少了需要读取的数据量。例如，条件 `Date != ' 2000-01-01 '` 是允许的，即使它会匹配表中的所有数据 (也就是说，运行该查询需要全表扫描) 。有关 MergeTree 表中数据范围的更多信息，请参见 [MergeTree](/docs/zh/reference/engines/table-engines/mergetree-family/mergetree)。

<div id="force_primary_key">
  ## force\_primary\_key
</div>

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

如果无法利用主键进行索引，则禁用查询执行。

适用于 MergeTree 家族中的表。

如果 `force_primary_key=1`，ClickHouse 会检查查询是否包含可用于限制数据范围的主键条件。如果没有合适的条件，则会抛出异常。不过，它不会检查该条件是否会减少需要读取的数据量。有关 MergeTree 表中数据范围的更多信息，请参见 [MergeTree](/docs/zh/reference/engines/table-engines/mergetree-family/mergetree)。

<div id="force_remove_data_recursively_on_drop">
  ## force\_remove\_data\_recursively\_on\_drop
</div>

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

在执行 DROP 查询时递归删除数据。可避免“Directory not empty”错误，但也可能在无提示的情况下删除 detached 数据
