在PostgreSQL上从JSON创建时间戳索引

费恩多

我有一个名为场PostgreSQL的表datajsonb有大量的对象,我想打一个索引,以加快查询。我正在使用几行来测试数据(仅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完成时间戳索引?我知道我可以用日期做一个简单的列,因为它可能在时间中保持不变,但是我想学习如何做。

欧文·布兰德斯特

索引中也不允许该表达式:

(CAST(data->>'created_at' AS timestamp) at time zone 'UTC')

它不是一成不变的,因为第一次转换取决于您的DateStyle设置(除其他事项外)。函数调用无助于将结果转换为UTC ,不确定性已经悄悄蔓延到...

溶液是一个函数,使通过固定时间段(如铸造不可改变@a_horse已经暗示)。

我建议使用to_timestamp()代替强制转换(也不是强制转换IMMUTABLE)来排除某些麻烦源-DateStyle成为一个。

CREATE OR REPLACE FUNCTION f_cast_isots(text)
  RETURNS timestamptz AS
$$SELECT to_timestamp($1, 'YYYY-MM-DD HH24:MI')$$  -- adapt to your needs
  LANGUAGE sql IMMUTABLE;

请注意,这将返回timestamptz然后:

CREATE INDEX foo ON t (f_cast_isots(data->>'created_at'));

此相关答案中对此技术的详细说明:

有关的:

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

通过在PostgreSQL上索引时间戳列来更快地搜索?

来自分类Dev

JSON上的PostgreSQL索引

来自分类Dev

Postgresql:在时间戳上添加 24 小时

来自分类Dev

PostgreSQL在JSONB []上创建索引

来自分类Dev

PostgreSQL:索引时间戳的一天部分

来自分类Dev

在索引字段上的Postgresql 9.2时间戳排序在一天中的小时部分没有排序

来自分类Dev

为相等和时间戳范围查询创建索引

来自分类Dev

您如何计算在大型Postgresql表上创建索引的时间?

来自分类Dev

PostgreSQL时间戳选择

来自分类Dev

PostgreSQL时间戳字段

来自分类Dev

PostgreSQL时间戳选择

来自分类Dev

在PostgreSQL中的时间戳上使用最小和最大函数

来自分类Dev

如何在PostgreSQL上使用Unix时间戳

来自分类Dev

在PostgreSQL中的时间戳上使用最小和最大函数

来自分类Dev

如何在 PostgreSQL 的时间戳上优化此连接

来自分类Dev

使用索引或位图索引扫描在时间戳上进行高效的PostgreSQL查询?

来自分类Dev

PostgreSQL忽略时间戳列上的索引,即使使用索引查询速度更快

来自分类Dev

在Laravel 5.2中从Postgresql时间戳返回JSON失败

来自分类Dev

使用假时间戳在 Google BigQuery 上创建分区

来自分类Dev

在PostgreSQL上创建索引时索引已存在异常

来自分类Dev

PostgreSQL按时间戳过滤

来自分类Dev

PostgreSQL:根据时间戳加入

来自分类Dev

为熊猫数据框的x和y坐标和时间戳创建多索引

来自分类Dev

从时间戳SQL创建队列

来自分类Dev

从猪创建蜂巢时间戳

来自分类Dev

Javascript从格式创建时间戳

来自分类Dev

KDB 创建微秒时间戳

来自分类Dev

使用desc在PostgreSQL上创建索引时出错

来自分类Dev

使用desc在PostgreSQL上创建索引时出错

Related 相关文章

热门标签

归档