0

我正在查询一个我只有读取权限并且不能以任何方式修改的 postgres 数据库表。长话短说,我需要每天运行一个查询以在几天内提取记录。我每天都在去物理上修改时间戳参数。该表大约有 4000 万条记录,我正在运行从 sql 服务器到链接服务器的查询。

c_stime 字段上有一个索引,这是我试图利用的时间戳,但是当我在该字段上执行功能时,我会扼杀这个优势。以下是我的一些结果:

select * from p_table where c_stime >= '2013-09-24 00:00:00.0000000' 
select * from p_table where c_stime >= current_date::timestamp
select * from p_table where c_stime >= current_date+ interval '0 hour'

第一个跑了 10 秒,第二个跑了 74 秒,第三个跑了 88 秒。想要一些动态的东西,比如第二个/第三个,性能接近第一个。任何帮助表示赞赏

4

1 回答 1

0

首先,检查您的查询计划。那里可能会有惊喜。

其次,如果问题如你所说,我很惊讶这不会奏效。但是,您可以使用 pg_catalog.* 函数来转换类型,这些是不可变的(允许在计划查询之前运行该函数),因此您可以尝试:

select * from p_table where c_stime >= pg_catalog.timestamp(current_date);
于 2013-11-18T06:53:43.023 回答