postgresql - 在 Postgres 10 中的 jsonb 上创建 btree 索引时如何指定 bigint 数据类型
问题描述
我有一个字段 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。
可能吗?
解决方案
您可以在索引中使用强制转换。
通常你会像这样转换 json: (json_value->>key)::bigint
,否则你会把你的key
转换成 bigint ,它会抛出错误。
所以这给出了 3 组括号 - 一组用于索引,第二组用于索引表达式,第三组用于强制转换。
create index t_mytable_timeinseconds__idx
ON t_mytable
using btree ( ( (mycolumn->>'time_in_seconds')::bigint ) );
推荐阅读
- intellij-idea - 如何在 IntelliJ Idea 中设置外部库的 javadoc?
- angularjs - 如何修复错误 [filter:notarray] Expected array but received json on Angularjs table filter?
- r - 将字符元素添加到数值矩阵
- sql-server - 在 Azure 中的 Docker 中运行 SQL Server 的最佳方式
- android - 更新鲜的 Kotlin : 在改造 kotlin 中发送正文中的数据
- c - 用 keyNumber 拉出数据
- swift - Swift for iOS - 2 for 循环同时运行?
- sublimetext3 - 在 Sublime 3 中保存文件后如何运行 shell 命令
- javascript - 从每个选择中获取价值
- sql - NetSuite Saved Search 公式用于过滤在某个阶段停留超过 60 天的 Opps