我有一个字段time_in_seconds的jsonb列。 针对该表的大多数查询都将要求使用time_in_seconds(首先是最大值)对结果集进行排序。
如果我只是做
create index t_mytable_timeinseconds__idx ON t_mytable using btree ((mycolumn->>'time_in_seconds'));
Postgres创建一个字母数字索引(不会导致正确的排序顺序)。
但是我似乎无法弄清楚如何指示postgres将值按降序视为bigint。
有可能吗?
答案 0 :(得分:1)
您可以在索引中使用强制转换。
通常,您会像这样(json_value->>key)::bigint
投射json,否则将key
转换为bigint并抛出错误。
所以这给出了三组括号-一组用于索引,第二组用于索引表达式,第三组用于强制转换。
create index t_mytable_timeinseconds__idx
ON t_mytable
using btree ( ( (mycolumn->>'time_in_seconds')::bigint ) );