将日期字段转换为postgres中多个字段的最快方法
我有一个包含大约100.000行的表,其中包含特定的可以为空的日期字段,我需要将其转换为多个列。这些列可以通过视图访问。将日期字段转换为postgres中多个字段的最快方法
为了简化的目的,让我们说我将两个表名为TAB1和TAB2,这两个表的内容并不重要,除了从TAB1日期字段
迄今为止解决方案,我赶到时以下:
create view result_view as
select to_char(t1.date, 'YYYY') AS year,
to_char(t1.date, 'MM') AS month,
to_char(t1.date, 'YYYY-MM-DD') AS day,
t2.value as value
from tab t1 left join tab2 t2 on t1.id = t2.id;
当前的解决方案是花费这么多时间,任何优化?
我有一个包含约100.000行,
这不是很大的一个非常大的表;)
运行查询explain (analyze, buffers)
下,看看那里的时间损失。
除此之外,我建议使用extract
而不是to_char
。
E.g. extract(YEAR from t1.date)
等。
提取是SQL标准并返回数字,而不是字符串。这通常是想要的。
的描述修改为更客观地 –
描述的问题@rachidelkedmiri您已删除的话*从这个问题非常大*。但是你没有遵循我的建议。 –
是。提取,date_part或https://www.postgresql.org/docs/8.1/static/functions-datetime.html#FUNCTIONS-DATETIME-EXTRACT – murison
所用的时间是不是花在'to_char'这里 –