在Postgres中创建关于JSONB字段存在的部分索引会给我PG :: ProgramLimitExceeded。但为什么?

时间:2019-02-06 09:53:21

标签: postgresql indexing jsonb

我想通过添加部分索引来优化的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

0 个答案:

没有答案