sql - Fastest way to PostgreSQL Distinct and Format -
i have 3.5 million rows in table acs_objects , need retrieve column creation_date year format , distinct.
my first attempt : 180~200 sec (15 rows fetched)
select distinct to_char(creation_date,'yyyy') acs_objects my second attempt : 35~40 sec (15 rows fetched)
select distinct to_char(creation_date,'yyyy') (select distinct creation_date acs_objects) distinct_date is there way make faster? -"i need use in adp website"
in second attempt distinct dates sub-query convert string representation , select distinct ones. rather inefficient. better first extract distinct years creation_date in sub-query , cast text in main query:
select year::text ( select distinct extract(year creation_date) year acs_objects ) distinct_years; if create index on table, query should run faster still:
create index really_fast on acs_objects((extract(year creation_date))); however, may impact other uses of table, in particular if have many modifying statements (insert, update, delete). , work if creation_date has data type of date or timestamp (specifically not timestamp timezone).
the below option looked promising because not use sub-query, in fact slower (see comments below), because distinct clause applied on string:
select distinct extract(year creation_date)::text acs_objects;
Comments
Post a Comment