我怎样才能索引to_char()
一列?
我努力了:
adam_db=> CREATE INDEX updates_hourly_idx
ON updates (to_char(update_time, 'YYYY-MM-DD HH24:00'));
但是得到了错误:
错误:必须标记索引表达式中的函数
IMMUTABLE
这看起来很奇怪,因为to_char()
时间戳是相当不可变的。
任何想法如何生成该索引?
我怎样才能索引to_char()
一列?
我努力了:
adam_db=> CREATE INDEX updates_hourly_idx
ON updates (to_char(update_time, 'YYYY-MM-DD HH24:00'));
但是得到了错误:
错误:必须标记索引表达式中的函数
IMMUTABLE
这看起来很奇怪,因为to_char()
时间戳是相当不可变的。
任何想法如何生成该索引?
接受的格式
to_char(timestamp, text)
包括使其不是不可变的本地化模式。相同输入的不同结果示例:
如果不使用这种格式,解决方案是创建自己的不可变包装函数,
然后在该函数上创建索引。
我刚刚根据这个论坛帖子找到了这个问题的另一个解决方案——
EXTRACT(timestamp with time zone)
不是一成不变的,EXTRACT(timestamp)
而是. 所以可以用CREATE INDEX ON table (EXTRACT(MONTH FROM timestamp AT TIME ZONE 'UTC'))
.