| From: | Brian Cox <brian(dot)cox(at)ca(dot)com> |
|---|---|
| To: | pgsql-performance(at)postgresql(dot)org |
| Subject: | limit + order by is slow if no rows in result set |
| Date: | 2007-02-12 21:36:45 |
| Message-ID: | 45D0DDED.1070400@ca.com |
| Views: | Whole Thread | Raw Message | Download mbox | Resend email |
| Thread: | |
| Lists: | pgsql-performance |
There are 1.9M rows in ts_defects and indexes on b.ts_id (primary key)
d.ts_biz_event_id and d.ts_occur_date. Both queries below return 0
rows. The 1st runs fast and the 2nd > 400x slower. The 2nd query
differs from the 1st only by the addition of "limit 1".
Why the big difference in performance?
Thanks,
Brian
[bcox(at)athena jsp]$ time PGPASSWORD=**** psql -U admin -d cemdb -h
192.168.1.30 -c 'select * from ts_defects d join ts_biz_events b on
b.ts_id = d.ts_biz_event_id where b.ts_status=3 order by d.ts_occur_date
desc;'
(column list deleted)
-------+--------------+--------------+---------------+---------------------------+----------------+----------------+------------+------------------------+------------------+-----------------+---------------+------------------+---------------+-----------------+-------------------+---------------------+---------------------+---------------------+--------------------+----------------+--------------------+----------------------+--------------------+----------------------+-----------------------+----------------+----------------------+---------------+-----------------+------------------+--------------+----------------+-------+--------------+---------------+---------------------------+------------------+---------+--------------------+---------------+-----------------+------------------+---------------+----------------------+---------------------+--------------------+-----------+---------------------+----------+---------------+--------------+------------------+-------------+--------
-----+--------------+--------------+----------------
(0 rows)
real 0m0.022s
user 0m0.003s
sys 0m0.003s
[bcox(at)athena jsp]$ time PGPASSWORD=**** psql -U admin -d cemdb -h
192.168.1.30 -c 'select * from ts_defects d join ts_biz_events b on
b.ts_id = d.ts_biz_event_id where b.ts_status=3 order by d.ts_occur_date
desc limit 1;'
(column list deleted)
-------+--------------+--------------+---------------+---------------------------+----------------+----------------+------------+------------------------+------------------+-----------------+---------------+------------------+---------------+-----------------+-------------------+---------------------+---------------------+---------------------+--------------------+----------------+--------------------+----------------------+--------------------+----------------------+-----------------------+----------------+----------------------+---------------+-----------------+------------------+--------------+----------------+-------+--------------+---------------+---------------------------+------------------+---------+--------------------+---------------+-----------------+------------------+---------------+----------------------+---------------------+--------------------+-----------+---------------------+----------+---------------+--------------+------------------+-------------+--------
-----+--------------+--------------+----------------
(0 rows)
real 0m9.410s
user 0m0.005s
sys 0m0.002s
| From | Date | Subject | |
|---|---|---|---|
| Next Message | Heikki Linnakangas | 2007-02-12 23:26:04 | Re: limit + order by is slow if no rows in result set |
| Previous Message | Mark Stosberg | 2007-02-12 19:48:58 | Re: cube operations slower than geo_distance() on production server |