我有一个包含许多元素的 JSONB 对象,其中一个是日期。以下查询现在非常慢,我的表中有数百万行:
SELECT * FROM table WHERE obj->>'dob' BETWEEN '2019-01-01' AND '2020-01-01'.
如何提高此查询的性能?
我有一个包含许多元素的 JSONB 对象,其中一个是日期。以下查询现在非常慢,我的表中有数百万行:
SELECT * FROM table WHERE obj->>'dob' BETWEEN '2019-01-01' AND '2020-01-01'.
如何提高此查询的性能?
您可以在列上创建索引。但是,将字符串转换为索引的日期并不简单,因为 Postgres 不会将转换识别为“不可变的”(尽管它是)。
通过一些解决方法,可以做到这一点:
然后你可以创建一个索引:
并使用 WHERE 子句中的函数: