Comment 23 for bug 276950

Revision history for this message
Robert Collins (lifeless) wrote :

With this index: create index packageupload__distroseries__status__archive__idx on packageupload(archive, distroseries, status, id);

original query (packageupload.id desc):

                                                                            QUERY PLAN
------------------------------------------------------------------------------------------------------------------------------------------------------------------
 Limit (cost=0.00..1843.12 rows=31 width=36) (actual time=49.705..1815.657 rows=1 loops=1)
   -> Index Scan Backward using distroreleasequeue_pkey on packageupload (cost=0.00..93404.35 rows=1571 width=36) (actual time=49.700..1815.649 rows=1 loops=1)
         Filter: ((archive = ANY ('{1,534}'::integer[])) AND (distroseries = 104) AND (status = 0))
 Total runtime: 1816.044 ms
(4 rows)

ORDER BY archive desc, PackageUpload.id DESC gives

                                                                                         QUERY PLAN
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
 Limit (cost=0.00..1150.06 rows=31 width=36) (actual time=237.566..329.911 rows=1 loops=1)
   -> Index Scan Backward using packageupload__distroseries__status__archive__idx on packageupload (cost=0.00..58282.10 rows=1571 width=36) (actual time=237.563..329.906 rows=1 loops=1)
         Index Cond: ((distroseries = 104) AND (status = 0))
         Filter: (archive = ANY ('{1,534}'::integer[]))
 Total runtime: 329.973 ms