I don't think it is an 8.4 issue - I suspect this would perform just as badly under other releases with the right data. Things that stand out are an outer join where a normal join would do, and the IN clauses referencing tables in the outer scope causing them to be reevaluated many times and not scaling.
SELECT BugTask.*, Product.*, SourcePackageName.*, Bug.*
FROM BugTask
LEFT JOIN Bug ON BugTask.bug = Bug.id
LEFT JOIN Product ON BugTask.product = Product.id
LEFT JOIN SourcePackageName ON BugTask.sourcepackagename = SourcePackageName.id WHERE
(1=1)
AND Bug.id = BugTask.bug
AND ( (BugTask.status = 10)
OR (BugTask.status = 15)
OR (BugTask.status = 20)
OR (BugTask.status = 21)
OR (BugTask.status = 22)
OR (BugTask.status = 25))
AND Bug.duplicateof is NULL
AND BugTask.id IN (
SELECT BugTask.id FROM BugTask, BugMessage, Message
WHERE Message.owner = 293289
AND Message.id = BugMessage.message
AND BugTask.bug = BugMessage.bug
AND Message.id NOT IN ( SELECT BugMessage.message FROM BugMessage WHERE BugMessage.bug = BugTask.bug ORDER BY BugMessage.id LIMIT 1 ) )
AND Bug.private = FALSE
ORDER BY BugTask.importance DESC, BugTask.id LIMIT 76 OFFSET 0
I don't think it is an 8.4 issue - I suspect this would perform just as badly under other releases with the right data. Things that stand out are an outer join where a normal join would do, and the IN clauses referencing tables in the outer scope causing them to be reevaluated many times and not scaling.
SELECT BugTask.*, Product.*, SourcePackageNa me.*, Bug.* sourcepackagena me = SourcePackageNa me.id WHERE
(BugTask. status = 10)
Message. owner = 293289
SELECT BugMessage.message FROM BugMessage
WHERE BugMessage.bug = BugTask.bug
ORDER BY BugMessage.id LIMIT 1 ) )
FROM BugTask
LEFT JOIN Bug ON BugTask.bug = Bug.id
LEFT JOIN Product ON BugTask.product = Product.id
LEFT JOIN SourcePackageName ON BugTask.
(1=1)
AND Bug.id = BugTask.bug
AND (
OR (BugTask.status = 15)
OR (BugTask.status = 20)
OR (BugTask.status = 21)
OR (BugTask.status = 22)
OR (BugTask.status = 25))
AND Bug.duplicateof is NULL
AND BugTask.id IN (
SELECT BugTask.id FROM BugTask, BugMessage, Message
WHERE
AND Message.id = BugMessage.message
AND BugTask.bug = BugMessage.bug
AND Message.id NOT IN (
AND Bug.private = FALSE
ORDER BY BugTask.importance DESC, BugTask.id LIMIT 76 OFFSET 0