将日期字段转换为postgres中的多个字段的最快方法

时间:2017-10-12 13:00:39

标签: sql postgresql postgresql-9.1

我有一个包含大约100.000行的表,其中包含一个特定的可为空的日期字段,我需要将其转换为多列。这些列可以通过视图访问。

为了简化目的,假设我正在加入两个名为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;

当前的解决方案需要花费很多时间,还有任何优化?

1 个答案:

答案 0 :(得分:2)

  

我有一个非常大的表,包含大约100.000行,

那不是很大;)

explain (analyze, buffers)下运行查询以查看时间丢失的位置。

除此之外,我建议使用extract代替to_char

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

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

有关提取的更多信息:http://modern-sql.com/feature/extract