> ## 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_optimize_* 会话设置

> 归类于 force_optimize_* 生成组的 ClickHouse 会话设置。

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_optimize_projection">
  ## force\_optimize\_projection
</div>

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

启用或禁用在启用投影优化时，是否在 `SELECT` 查询中强制使用[投影](/docs/zh/reference/engines/table-engines/mergetree-family/mergetree#projections) (参见 [optimize\_use\_projections](/docs/zh/reference/settings/session-settings/optimize-use#optimize_use_projections) 设置) 。

可能的值：

* 0 — 不强制进行投影优化。
* 1 — 强制进行投影优化。

<div id="force_optimize_projection_name">
  ## force\_optimize\_projection\_name
</div>

如果将其设置为非空字符串，则会检查查询中是否至少使用过一次该投影。

可能的值：

* String：查询中使用的投影名称

<div id="force_optimize_skip_unused_shards">
  ## force\_optimize\_skip\_unused\_shards
</div>

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

当启用 [optimize\_skip\_unused\_shards](/docs/zh/reference/settings/session-settings/optimize-skip#optimize_skip_unused_shards) 且无法跳过未使用的分片时，此设置用于启用或禁用查询执行。若无法跳过且启用了此设置，则会抛出异常。

可能的值：

* 0 — 已禁用。ClickHouse 不会抛出异常。
* 1 — 已启用。仅当表具有分片键时，才会禁用查询执行。
* 2 — 已启用。无论表是否定义了分片键，都会禁用查询执行。

<div id="force_optimize_skip_unused_shards_nesting">
  ## force\_optimize\_skip\_unused\_shards\_nesting
</div>

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

控制 [`force_optimize_skip_unused_shards`](/docs/zh/reference/settings/session-settings/force-optimize#force_optimize_skip_unused_shards) 在分布式查询不同嵌套层级中的生效方式 (因此仍需启用 [`force_optimize_skip_unused_shards`](/docs/zh/reference/settings/session-settings/force-optimize#force_optimize_skip_unused_shards)) 。这适用于一个 `Distributed` 表查询另一个 `Distributed` 表的情况。

可选值：

* 0 - 禁用，`force_optimize_skip_unused_shards` 始终生效。
* 1 — 仅在第一层启用 `force_optimize_skip_unused_shards`。
* 2 — 在最多到第二层时启用 `force_optimize_skip_unused_shards`。
