我想通过添加部分索引来优化的SQL查询如下:
SELECT * FROM emails WHERE state ? 'failure'
我试图在Postgres数据库表中存在JSONB字段(此处为state -> failure
)上创建部分索引。 SQL语句如下所示:
CREATE INDEX "partial_index_failure_on_emails" ON "emails" ("state") WHERE (state ? 'failure')
每次尝试执行SQL语句添加此索引时,数据库都会失败,并显示以下错误:
PG::ProgramLimitExceeded: ERROR: index row requires 13080 bytes, maximum size is 8191
我不知道是什么原因导致此错误,因为结果索引应该是布尔值,绝对不需要超过8191个字节-甚至不需要关闭。
我想念什么?
我也尝试使用类似的索引定义,但这给出了相同的错误:
CREATE INDEX "partial_index_failure_on_emails" ON "emails" ("state") WHERE (state -> 'failure') IS NOT NULL