You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PostgreSQL 18中ANALYZE语句的*参数具体作用是什么?

PostgreSQL 18中ANALYZE语法新增的*参数解析

根据PostgreSQL 18的ANALYZE官方文档,其table_and_columns语法定义为:

[ ONLY ] table_name [ * ] [ ( column_name [, ...] ) ]

这个紧跟在表名后的可选*参数是PostgreSQL 18新增的,在PostgreSQL 17及更早版本的ANALYZE语法中不存在,且目前官方文档未明确说明它的作用。

结合PostgreSQL的语法设计惯例可以推断:这个*的作用是递归分析目标表及其所有继承子表,而非单纯表示“所有列”。

PostgreSQL中很多涉及表对象的命令都遵循类似语法逻辑:

  • 使用ONLY table_name时,仅操作当前表本身,不包含其继承子表
  • 使用table_name*时,会递归操作该表及其所有继承子表
  • 不指定ONLY或*时,默认行为和ONLY table_name一致(仅操作当前表)

对应到ANALYZE命令上:

  1. ANALYZE table_name:仅分析当前表的所有列,不包含继承子表
  2. ANALYZE table_name*:分析当前表及其所有继承子表的所有列
  3. ANALYZE table_name* (col1, col2):分析当前表及其所有继承子表的指定列

这就解释了为什么它和“省略列名”不重复——省略列名是控制分析的列范围,而*是控制是否包含继承子表,二者是不同维度的语法参数。

内容的提问来源于stack exchange,提问作者Peter

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.13 01:17:33