Thread: NOW vs CURRENT_DATE
Hello every body, I just discover a big not only big huge difference between NOW() and CURRENT_DATE. Did you already know about it and do you know why ? DELETE FROM blacklist where bl_date < (NOW() - interval '2 DAY'); on 6 000 000 of records 699 ms DELETE FROM blacklist where bl_date < (CURRENT_DATE - interval '2 DAY'); on 6 000 000 of records 0.065 ms tx david
> I just discover a big not only big huge difference between NOW() and > CURRENT_DATE. > > Did you already know about it and do you know why ? > > DELETE FROM blacklist where bl_date < (NOW() - interval '2 DAY'); > on 6 000 000 of records > 699 ms > > DELETE FROM blacklist where bl_date < (CURRENT_DATE - interval '2 DAY'); > on 6 000 000 of records Is this a one-off run after each other (e.g. with a ROLLBACK in between)? If so I suspect the difference is due to caching and if you re-run the NOW() version it would also be fast. Also, NOW() is equivalent to CURRENT_TIMESTAMP() rather than CURRENT_DATE(). Perhaps the date vs. timestamp has some implication of how they query is planned. -- / Peter Schuller PGP userID: 0xE9758B7D or 'Peter Schuller <peter.schuller@infidyne.com>' Key retrieval: Send an E-Mail to getpgpkey@scode.org E-Mail: peter.schuller@infidyne.com Web: http://www.scode.org
Attachment
Hi, dforum wrote: > Hello every body, > > I just discover a big not only big huge difference between NOW() and > CURRENT_DATE. > > Did you already know about it and do you know why ? > > DELETE FROM blacklist where bl_date < (NOW() - interval '2 DAY'); > on 6 000 000 of records > 699 ms > > DELETE FROM blacklist where bl_date < (CURRENT_DATE - interval '2 DAY'); > on 6 000 000 of records Try that with a timestamp - column and use now() and current_timestamp with a long running query and then compare min(column) max(column) in both cases :-) Regards Tino