Comment 19 for bug 276950

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

With a new index:
create index packageupload__distroseries__status__archive__idx on packageupload(distroseries, status, archive, id);'

we get

explain analyze SELECT PackageUpload.archive,
       PackageUpload.changesfile,
       PackageUpload.date_created,
       PackageUpload.distroseries,
       PackageUpload.id,
       PackageUpload.pocket,
       PackageUpload.signing_key,
       PackageUpload.status
FROM PackageUpload
WHERE packageupload.distroseries = 104
  AND packageupload.archive IN (1, 534)
  AND packageupload.status IN (0)
ORDER BY distroseries desc, status desc, archive desc, PackageUpload.id DESC LIMIT 31
 OFFSET 0;
                                                                                      QUERY PLAN
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
 Limit (cost=0.00..105.89 rows=31 width=36) (actual time=0.106..0.108 rows=1 loops=1)
   -> Index Scan Backward using packageupload__distroseries__status__archive__idx on packageupload (cost=0.00..5365.99 rows=1571 width=36) (actual time=0.104..0.106 rows=1 loops=1)
         Index Cond: ((distroseries = 104) AND (status = 0))
         Filter: (archive = ANY ('{1,534}'::integer[]))
 Total runtime: 0.159 ms
(5 rows)

Time: 1.931 ms