index_advisor

查询索引建议器

概览

扩展包名版本分类许可证语言
index_advisor0.2.0FEATPostgreSQLSQL
ID扩展名BinLibLoadCreateTrustReloc模式
2800index_advisor-
相关扩展hypopg hypopg pg_qualstats powa pg_stat_statements pg_hint_plan auto_explain pg_profile pg_show_plans

版本

类型仓库版本PG 大版本包名依赖
EXTPIGSTY0.2.01817161514index_advisorhypopg
RPMPIGSTY0.2.01817161514index_advisor_$v-
DEBPIGSTY0.2.01817161514postgresql-$v-index-advisor-
OS / PGPG18PG17PG16PG15PG14
el8.x86_64
el8.aarch64
el9.x86_64
el9.aarch64
el10.x86_64
el10.aarch64
d12.x86_64
PIGSTY 0.2.0
PIGSTY 0.2.0
PIGSTY 0.2.0
PIGSTY 0.2.0
PIGSTY 0.2.0
d12.aarch64
PIGSTY 0.2.0
PIGSTY 0.2.0
PIGSTY 0.2.0
PIGSTY 0.2.0
PIGSTY 0.2.0
d13.x86_64
PIGSTY 0.2.0
PIGSTY 0.2.0
PIGSTY 0.2.0
PIGSTY 0.2.0
PIGSTY 0.2.0
d13.aarch64
PIGSTY 0.2.0
PIGSTY 0.2.0
PIGSTY 0.2.0
PIGSTY 0.2.0
PIGSTY 0.2.0
u22.x86_64
PIGSTY 0.2.0
PIGSTY 0.2.0
PIGSTY 0.2.0
PIGSTY 0.2.0
PIGSTY 0.2.0
u22.aarch64
PIGSTY 0.2.0
PIGSTY 0.2.0
PIGSTY 0.2.0
PIGSTY 0.2.0
PIGSTY 0.2.0
u24.x86_64
PIGSTY 0.2.0
PIGSTY 0.2.0
PIGSTY 0.2.0
PIGSTY 0.2.0
PIGSTY 0.2.0
u24.aarch64
PIGSTY 0.2.0
PIGSTY 0.2.0
PIGSTY 0.2.0
PIGSTY 0.2.0
PIGSTY 0.2.0

构建

您可以使用 pig build 命令构建 index_advisor 扩展的 RPM / DEB 包:

pig build pkg index_advisor         # 构建 RPM / DEB 包

安装

您可以直接安装 index_advisor 扩展包的预置二进制包,首先确保 PGDGPIGSTY 仓库已经添加并启用:

pig repo add pgsql -u          # 添加仓库并更新缓存

使用 pig 或者是 apt/yum/dnf 安装扩展:

pig install index_advisor;          # 当前活跃 PG 版本安装
pig ext install -y index_advisor -v 18  # PG 18
pig ext install -y index_advisor -v 17  # PG 17
pig ext install -y index_advisor -v 16  # PG 16
pig ext install -y index_advisor -v 15  # PG 15
pig ext install -y index_advisor -v 14  # PG 14
dnf install -y index_advisor_18       # PG 18
dnf install -y index_advisor_17       # PG 17
dnf install -y index_advisor_16       # PG 16
dnf install -y index_advisor_15       # PG 15
dnf install -y index_advisor_14       # PG 14
apt install -y postgresql-18-index-advisor   # PG 18
apt install -y postgresql-17-index-advisor   # PG 17
apt install -y postgresql-16-index-advisor   # PG 16
apt install -y postgresql-15-index-advisor   # PG 15
apt install -y postgresql-14-index-advisor   # PG 14

创建扩展

CREATE EXTENSION index_advisor CASCADE;  -- 依赖: hypopg

用法

index_advisor: 查询索引顾问

index_advisor 分析 SQL 查询并推荐能够改善执行时间的索引,报告创建建议索引前后的成本估算以及相应的 DDL 语句。

函数

index_advisor(query text)
RETURNS TABLE (
    startup_cost_before jsonb,
    startup_cost_after  jsonb,
    total_cost_before   jsonb,
    total_cost_after    jsonb,
    index_statements    text[],
    errors              text[]
)

基本示例

CREATE TABLE book (
    id    int  PRIMARY KEY,
    title text NOT NULL
);

SELECT * FROM index_advisor('
    SELECT book.id FROM book WHERE title = $1
');

返回成本改善情况和推荐的 CREATE INDEX 语句。

多表示例

SELECT * FROM index_advisor('
    SELECT book.id, book.title, publisher.name, author.name, review.body
    FROM book
    JOIN publisher ON book.publisher_id = publisher.id
    JOIN author    ON book.author_id = author.id
    JOIN review    ON book.id = review.book_id
    WHERE author.id = $1 AND publisher.id = $2
');

输出包含跨多个关联表的索引推荐,以及创建前后的成本对比。

功能特性

  • 支持使用 $1$2 语法的参数化查询
  • 支持物化视图
  • 能够解析视图背后的底层表和列
  • 依赖 HypoPG 进行假想索引评估

最后修改 2026-03-14: update extension metadata (953cbd0)