> ## Documentation Index
> Fetch the complete documentation index at: https://private-7c7dfe99-fix-nav-issues.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

> 包含在查询执行期间从 `MergeTree` 读取管道中收集的采样过滤器和索引选择性统计信息的系统表。

# system.predicate_statistics_log

<Info>
  **在 ClickHouse Cloud 中查询**

  此系统表中的数据分别保存在 ClickHouse Cloud 各节点的本地。因此，如需查看所有数据的完整情况，需要使用 `clusterAllReplicas` 函数。更多详情请参见[此处](/zh/reference/system-tables/overview#system-tables-in-clickhouse-cloud)。
</Info>

<div id="description">
  ## 说明
</div>

包含从 `MergeTree` 表读取数据时收集的样本选择性统计信息。仅当 [`predicate_statistics_sample_rate`](/zh/reference/settings/session-settings#predicate_statistics_sample_rate) 大于 `0` 时，才会填充该表。

可使用此表查看真实工作负载中用户谓词的选择性，以及经过主键或跳过索引过滤后还剩余多少粒度。这些数据可作为基于工作负载的索引和投影建议的输入。

<div id="row-shapes">
  ## 行形态
</div>

单个查询可在 `system.predicate_statistics_log` 中生成两类行：

* **过滤行**：在 `MergeTreeSelectProcessor` 中，每个 prewhere/过滤器步骤都会生成一行。它们会填充 `predicate_expression`、`input_rows`、`passed_rows`、`filter_selectivity`，以及表示整个谓词的列 `total_input_rows`、`total_passed_rows`、`total_selectivity`。与索引相关的列为空。
* **索引行**：在 `ReadFromMergeTree` 中，每个读取步骤都会生成一行。它们会填充 `index_names`、`index_types`、`total_granules`、`granules_after` 和 `index_selectivities` 数组，其中每个索引阶段对应一个条目 (主键、分区、跳过索引) 。与谓词相关的列为空。

同一查询的过滤行和索引行具有相同的 `query_id` 和 `table`，因此在同时需要两者时可以将它们联接起来。

<div id="sampling-and-overhead">
  ## 采样与开销
</div>

采样由 [`predicate_statistics_sample_rate`](/zh/reference/settings/session-settings#predicate_statistics_sample_rate) 控制：

* `0` 禁用采集。
* `1` 对每个查询都采样。
* `N > 1` 对大约 `1 / N` 的查询进行采样，并按 `query_id` 计算哈希。

较小的值会生成更多数据，但也会增加读取路径上的 CPU 开销，并向系统日志写入更多内容。启用此设置后，如果需要让这些行立即显示出来，请使用 [`SYSTEM FLUSH LOGS`](/zh/reference/statements/system#flush-logs)。

<div id="columns">
  ## 列
</div>

* `hostname` ([LowCardinality(String)](/zh/reference/data-types/lowcardinality)) — 执行该查询的服务器的主机名。
* `event_date` ([Date](/zh/reference/data-types/date)) — 事件日期。
* `event_time` ([DateTime](/zh/reference/data-types/datetime)) — 写入此日志条目时的时间戳。
* `database` ([LowCardinality(String)](/zh/reference/data-types/lowcardinality)) — 目标表所在数据库的名称。
* `table` ([LowCardinality(String)](/zh/reference/data-types/lowcardinality)) — 目标表的表名。
* `query_id` ([String](/zh/reference/data-types/string)) — 用于关联回 query\_log 的查询 ID。
* `predicate_expression` ([String](/zh/reference/data-types/string)) — 此 prewhere/filter 步骤处理的完整过滤表达式 (ActionsDAG 转储) 。
* `input_rows` ([UInt64](/zh/reference/data-types/int-uint)) — 进入此 prewhere/filter 步骤的行数。
* `passed_rows` ([UInt64](/zh/reference/data-types/int-uint)) — 通过此 prewhere/filter 步骤后保留下来的行数。
* `filter_selectivity` ([Float64](/zh/reference/data-types/float)) — 此步骤的选择性：passed\_rows / input\_rows。
* `total_input_rows` ([UInt64](/zh/reference/data-types/int-uint)) — 进入第一个 prewhere 步骤的行数 (即从粒度中读取的总行数) 。
* `total_passed_rows` ([UInt64](/zh/reference/data-types/int-uint)) — 经过所有 prewhere 步骤后保留下来的行数 (即传递给查询的行数) 。
* `total_selectivity` ([Float64](/zh/reference/data-types/float)) — 整个谓词的选择性：total\_passed\_rows / total\_input\_rows。
* `index_names` ([Array(LowCardinality(String))](/zh/reference/data-types/array)) — 应用的索引名称，例如 \['PrimaryKey', 'idx\_bf\_status'] (仅索引行) 。
* `index_types` ([Array(LowCardinality(String))](/zh/reference/data-types/array)) — 应用的索引类型：PrimaryKey、Skip、MinMax、Partition (仅索引行) 。
* `total_granules` ([Array(UInt64)](/zh/reference/data-types/array)) — 进入各索引阶段的粒度数 (仅索引行) 。
* `granules_after` ([Array(UInt64)](/zh/reference/data-types/array)) — 每个索引阶段后剩余的粒度数 (仅索引行) 。
* `index_selectivities` ([Array(Float64)](/zh/reference/data-types/array)) — 各索引的选择性：granules\_after / total\_granules (仅索引行) 。

<div id="example">
  ## 示例
</div>

```sql theme={null}
SET predicate_statistics_sample_rate = 1;

SELECT *
FROM hits
WHERE URL LIKE '%/product/%' AND EventDate >= today() - 7
FORMAT Null;

SYSTEM FLUSH LOGS predicate_statistics_log;

SELECT
    query_id,
    predicate_expression,
    round(filter_selectivity, 3) AS step_selectivity,
    round(total_selectivity, 3) AS query_selectivity,
    index_names,
    index_selectivities
FROM system.predicate_statistics_log
WHERE table = 'hits'
ORDER BY event_time DESC
LIMIT 10;
```

<div id="see-also">
  ## 另请参见
</div>

* [`predicate_statistics_sample_rate`](/zh/reference/settings/session-settings#predicate_statistics_sample_rate)
* [system.query\_log](/zh/reference/system-tables/query_log)
