我有一个包含约 2 亿行的表,其中包含一个日期列。我想执行以下查询。
select my_date from my_table
where my_date > to_date('2020-10-01', 'YYYY-MM-DD');
在执行查询时,在每行中的每个 my_date 上,数据库中的日期值将与我的字符串日期进行比较,该字符串日期转换为日期对象。postgres 是否足够聪明,可以意识到这种从字符串到日期对象的转换只需要执行一次,还是会在每一行都执行?
我有一个包含约 2 亿行的表,其中包含一个日期列。我想执行以下查询。
select my_date from my_table
where my_date > to_date('2020-10-01', 'YYYY-MM-DD');
在执行查询时,在每行中的每个 my_date 上,数据库中的日期值将与我的字符串日期进行比较,该字符串日期转换为日期对象。postgres 是否足够聪明,可以意识到这种从字符串到日期对象的转换只需要执行一次,还是会在每一行都执行?
Postgres 将只进行一次字符串到日期的转换,因为
to_date
它是一个STABLE
函数并且参数是一个常量。但是,如果您对此感到担心,请使用日期文字语法:
date '2020-10-01'
。见https://www.postgresql.org/docs/current/datatype-datetime.html#DATATYPE-DATETIME-INPUT