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

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

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="optimize_skip_merged_partitions">
  ## optimize\_skip\_merged\_partitions
</div>

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

如果只有一个 level > 0 的数据分片，且其生存时间 (TTL) 尚未过期，则启用或禁用对 [OPTIMIZE TABLE ... FINAL](/docs/zh/reference/statements/optimize) 查询的优化。

* `OPTIMIZE TABLE ... FINAL SETTINGS optimize_skip_merged_partitions=1`

默认情况下，即使只有一个数据分片，`OPTIMIZE TABLE ... FINAL` 查询也会重写该分片。

可能的值：

* 1 - 启用优化。
* 0 - 禁用优化。

<div id="optimize_skip_unused_shards">
  ## optimize\_skip\_unused\_shards
</div>

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

对在 `WHERE/PREWHERE` 中包含分片键条件的 [SELECT](/docs/zh/reference/statements/select/index) 查询，启用或禁用跳过未使用分片，并启用分布式查询的相关优化 (例如按分片键聚合) 。

<Note>
  假定数据是按分片键分布的，否则查询会返回错误结果。
</Note>

可能的值：

* 0 — 禁用。
* 1 — 启用。

<div id="optimize_skip_unused_shards_limit">
  ## optimize\_skip\_unused\_shards\_limit
</div>

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

分片键的值数量上限；达到该限制时，将禁用 `optimize_skip_unused_shards`。

值过多可能会带来大量处理开销，而收益却未必明显；因为如果 `IN (...)` 中包含大量值，查询很可能最终还是会被发送到所有分片。

<div id="optimize_skip_unused_shards_nesting">
  ## optimize\_skip\_unused\_shards\_nesting
</div>

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

控制 [`optimize_skip_unused_shards`](/docs/zh/reference/settings/session-settings/optimize-skip#optimize_skip_unused_shards) 生效的分布式查询嵌套层级 (例如 `Distributed` 表查询另一张 `Distributed` 表时) ；因此仍需启用 [`optimize_skip_unused_shards`](/docs/zh/reference/settings/session-settings/optimize-skip#optimize_skip_unused_shards)。

可能的值：

* 0 — 禁用，`optimize_skip_unused_shards` 始终生效。
* 1 — 仅在第一层启用 `optimize_skip_unused_shards`。
* 2 — 在最多两层内启用 `optimize_skip_unused_shards`。

<div id="optimize_skip_unused_shards_rewrite_in">
  ## optimize\_skip\_unused\_shards\_rewrite\_in
</div>

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

对远程分片上的查询中的 IN 进行改写，以排除不属于该分片的值 (需要 optimize\_skip\_unused\_shards) 。

可能的值：

* 0 — 禁用。
* 1 — 启用。
