2017-10-12 100 views
1

我有一个包含大约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; 

当前的解决方案是花费这么多时间,任何优化?

+0

所用的时间是不是花在'to_char'这里 –

回答

2

我有一个包含约100.000行,

这不是很大的一个非常大的表;)

运行查询explain (analyze, buffers)下,看看那里的时间损失。

除此之外,我建议使用extract而不是to_char

E.g. extract(YEAR from t1.date)等。

提取是SQL标准并返回数字,而不是字符串。这通常是想要的。

更多关于提取物:http://modern-sql.com/feature/extract

+0

的描述修改为更客观地 –

+0

描述的问题@rachidelkedmiri您已删除的话*从这个问题非常大*。但是你没有遵循我的建议。 –

+0

是。提取,date_part或https://www.postgresql.org/docs/8.1/static/functions-datetime.html#FUNCTIONS-DATETIME-EXTRACT – murison

相关问题