我在 PostgreSQL 上有一个表,其中有一个名为的字段data
,jsonb
其中包含很多对象,我想创建一个索引来加快查询速度。我使用几行来测试数据(只有 15 行),但我不想在将来遇到查询问题。我从 Twitter API 获取数据,所以一周后我得到了大约 10gb 的数据。
如果我做正常的索引
CREATE INDEX ON tweet((data->>'created_at'));
我得到一个文本索引,如果我做:
Create index on tweet((CAST(data->>'created_at' AS timestamp)));
我明白了
ERROR: functions in index expression must be marked IMMUTABLE
我试图让它“不可变”设置时区
date_trunc('seconds', CAST(data->>'created_at' AS timestamp) at time zone 'GMT')
但我仍然收到“不可变”错误。那么,如何从 JSON 中完成时间戳索引?我知道我可以用日期制作一个简单的列,因为它可能会在一段时间内保持不变,但我想学习如何做到这一点。