Comment 7 for bug 722794

Revision history for this message
Stuart Bishop (stub) wrote :

For the query in comment #6, the following variant runs consistantly at 0.6-1s on the master:

SELECT
    spn.id, spn.name,
    coalesce(total_bug_heat, 0)
    + coalesce(po_messages, 0)
    + CASE WHEN component = 1 THEN 1000 ELSE 0 END AS score,
    coalesce(bug_count, 0) AS bug_count,
    coalesce(total_messages, 0) AS total_messages
FROM
    SourcepackageName AS spn, (
    SELECT
        spr.sourcepackagename,
        spr.component,
        bug_count,
        total_bug_heat,
        SUM(POTemplate.messagecount) * 0.5 AS po_messages,
        SUM(POTemplate.messagecount) AS total_messages
    FROM
        SourcePackageRelease AS spr
        JOIN SourcePackagePublishingHistory AS spph
            ON spr.id = spph.sourcepackagerelease
        JOIN Archive
            ON spph.archive = Archive.id
        JOIN Section
            ON spph.section = Section.id
        JOIN DistroSeries
            ON spph.distroseries = DistroSeries.id
        LEFT OUTER JOIN DistributionSourcePackage AS dsp
            ON dsp.sourcepackagename = spr.sourcepackagename
                AND dsp.distribution = DistroSeries.distribution
        LEFT OUTER JOIN POTemplate
            ON POTemplate.sourcepackagename = spr.sourcepackagename
                AND POTemplate.distroseries = DistroSeries.id
    WHERE
        DistroSeries.id = 93
        AND spph.status IN (1, 2)
        AND Archive.purpose = 1
        AND Section.name <> 'translations'
        AND NOT EXISTS (
            SELECT TRUE FROM Packaging
            WHERE
                Packaging.sourcepackagename = spr.sourcepackagename
                AND Packaging.distroseries = spph.distroseries)
    GROUP BY
        spr.sourcepackagename, spr.component, bug_count, total_bug_heat
    ) AS whatever
WHERE spn.id = whatever.sourcepackagename
ORDER BY score DESC, spn.name LIMIT 21 OFFSET 0;