Re: Sort is generating rows - Mailing list pgsql-general

From Nicolas Seinlet
Subject Re: Sort is generating rows
Date
Msg-id CAMEUSaR5OYkoxhcn8RkHLCGj7xDvydmo=7wQ=g8F0XgbOs+MJw@mail.gmail.com
Whole thread Raw
In response to Re: Sort is generating rows  (Adrian Klaver <adrian.klaver@aklaver.com>)
Responses Re: Sort is generating rows
List pgsql-general
Hi,

I've tried some tests, by generating various datas in the res_currency_rate table.

If I generate res_currency_rate rows for unsused currencies, this doesn't influence the execution time.
if I generate more res_currency_rate for used currencies, this slower the query.
If I generate 100 rates, on a one per day basis, I get an execution time of 4.5 seconds
If I generate 100 rates, on a one per 3 days basis, execution time drops to 4 seconds
If I generate 100 rates, on a one per 6 days basis, execution time drops to 3.8 seconds.

I've executed following tests many times, to avoid cache or buffers related issues, each time after vacuuming table, ...

The execution time with a join of type daterange :
res_currency_rate.currency_id = pp.currency_id AND (res_currency_rate.company_id = s.company_id OR res_currency_rate.company_id IS NULL) AND daterange(res_currency_rate.name, res_currency_rate.date_end) @> COALESCE(s.date_order::timestamp with time zone, now())::date

is slower than the date comparison equivalent:
res_currency_rate.currency_id = pp.currency_id AND (res_currency_rate.company_id = s.company_id OR res_currency_rate.company_id IS NULL) AND res_currency_rate.name <= COALESCE(s.date_order::timestamp with time zone, now()) AND (res_currency_rate.date_end IS NULL OR res_currency_rate.date_end > COALESCE(s.date_order::timestamp with time zone, now()))


pgsql-general by date:

Previous
From: gilberto.castillo@etecsa.cu
Date:
Subject: Re: [MASSMAIL]Re: Code of Conduct plan
Next
From: Chris Travers
Date:
Subject: Re: Code of Conduct plan