【发布时间】:2018-05-03 15:14:15
【问题描述】:
我正在尝试根据时间戳字段的年月创建索引(例如2018-03)。
最初我尝试这样做:
create index tmp_year_mo on my_table
((to_char(DATE(ts_field AT TIME zone 'utc'), 'YYYY-MM')))
但不幸的是,您得到了ERROR: functions in index expression must be marked IMMUTABLE,因为该函数显然具有可变输出。这对我来说不太有意义,因为我认为我通过将时区设置为 UTC (?) 来消除输出的可变性。
其他所有发布此问题的人都有一个更简单的问题,比如使用 ::DATE 转换,这很好,但我需要年月。
我想一个解决方案可能是在表中创建一个全新的列,然后用这个值填充它,然后索引它,但是有一个表达式可以在 CREATE INDEX 范围内工作吗?
【问题讨论】:
-
ts_field的数据类型是什么?..
标签: sql postgresql indexing