Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Frage zur SQL-Abfrageleistung (mehrere Unterabfragen)

Wenn "aktiv" in alphabetischer Reihenfolge an erster Stelle steht, können Sie möglicherweise Unterabfragen reduzieren auf:

SELECT p.id, r.status, r.title
FROM page AS p
    INNER JOIN page_revision as r ON r.pageId = p.id AND 
        r.id = (SELECT r2.id 
                FROM page_revision as r2 
                WHERE r2.pageId = r.pageId 
                ORDER BY r2.status, r2.id DESC
                LIMIT 1)

Andernfalls können Sie die ORDER BY-Zeile durch

ersetzen
ORDER BY CASE r2.status WHEN 'active' THEN 0 ELSE 1 END, r2.id DESC

Diese stammen alle von meinen Annahmen zu SQL Server, Ihre Erfahrung mit MySQL kann variieren.