postgresql - PostgreSQL - 在 JSONPath 比较表达式中使用的索引 JSON 字段
问题描述
给定 PostgreSQL 13.3 表和数据
CREATE TABLE transaction (message jsonb NOT NULL);
INSERT INTO transaction(message) VALUES ('{"amount": 1.00}'), ('{"amount": 2.00}');
索引
CREATE INDEX ON transaction (((message->'amount')::numeric));
在查询中使用
SELECT t.message FROM transaction t
WHERE (t.message->'amount')::numeric > 1.00;
两个指标都没有
CREATE INDEX ON transaction USING GIN (message);
CREATE INDEX ON transaction USING GIN (message jsonb_path_ops);
在查询中使用
SELECT t.message FROM transaction t
WHERE t.message @@ format('$.amount > %s', 1.00)::jsonpath;
PostgreSQL 中有没有一种方法来索引transaction.message
列,以便 JSONPath@@
运算符使用索引而不是执行 Seq Scan?