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;
For the query in comment #6, the following variant runs consistantly at 0.6-1s on the master:
SELECT total_bug_ heat, 0) po_messages, 0) bug_count, 0) AS bug_count, total_messages, 0) AS total_messages geName AS spn, (
spr.sourcepack agename,
spr.component,
total_ bug_heat,
SUM(POTemplate .messagecount) * 0.5 AS po_messages,
SUM(POTemplate .messagecount) AS total_messages
SourcePackageR elease AS spr blishingHistory AS spph agerelease rcePackage AS dsp gename = spr.sourcepacka gename distribution sourcepackagena me = spr.sourcepacka gename distroseries = DistroSeries.id
DistroSeries. id = 93
Packaging. sourcepackagena me = spr.sourcepacka gename distroseries = spph.distroseries)
spr.sourcepack agename, spr.component, bug_count, total_bug_heat sourcepackagena me
spn.id, spn.name,
coalesce(
+ coalesce(
+ CASE WHEN component = 1 THEN 1000 ELSE 0 END AS score,
coalesce(
coalesce(
FROM
Sourcepacka
SELECT
bug_count,
FROM
JOIN SourcePackagePu
ON spr.id = spph.sourcepack
JOIN Archive
ON spph.archive = Archive.id
JOIN Section
ON spph.section = Section.id
JOIN DistroSeries
ON spph.distroseries = DistroSeries.id
LEFT OUTER JOIN DistributionSou
ON dsp.sourcepacka
AND dsp.distribution = DistroSeries.
LEFT OUTER JOIN POTemplate
ON POTemplate.
AND POTemplate.
WHERE
AND spph.status IN (1, 2)
AND Archive.purpose = 1
AND Section.name <> 'translations'
AND NOT EXISTS (
SELECT TRUE FROM Packaging
WHERE
AND Packaging.
GROUP BY
) AS whatever
WHERE spn.id = whatever.
ORDER BY score DESC, spn.name LIMIT 21 OFFSET 0;