Joachim: left join optimieren

Beitrag lesen

Hi,

Meine bescheidenen SQL-Kenntnisse brauchen etwas Support. 3 Tabellen,  eine mit Artikeln (a), eine mit Benutzerdaten (b) und eine mit Kommentaren (c). Ich möchte alle Artikel, die Autorendaten und die Anzahl der Kommentare zu einem Artikel. Mein alter Ansatz war wie folgt:

"select a.id, a.article\_title, a.article\_text, a.article\_author\_id, a.date, b.email, b.nick, COUNT(c.comment\_article\_id) from
            table\_a as a,
            table\_b as b LEFT JOIN
            table\_c as c ON
            a.id=c.comment\_article\_id
        where a.article\_author\_id=b.id and a.blog\_name='blogname'
        GROUP BY a.id
        order by a.id desc LIMIT 0, 10;

Wir schwant dunkel, das dieser Ansatz nicht optimal ist, denn wenn ich meine Quellen korrekt interpretiere, muss b jedesmal komplett gescannt werden um die Autorendaten aus b zu ermitteln. Ist es wie folgt besser gelöst (funktionieren tut es)?

"select a.id, a.article\_title, a.article\_text, a.article\_author\_id, a.date, b.email, b.nick, COUNT(c.comment\_article\_id) from
            table\_a as a LEFT JOIN
            table\_b as b ON
            (a.article\_author\_id=b.id) LEFT JOIN
            table\_c as c ON
            (a.id=c.comment\_article\_id)
        where a.blog\_name='blogname'
        GROUP BY a.id
        order by a.id desc LIMIT 0, 10;

Falls gut - weiter optimierbar?

Gruesse, Joachim

--
Am Ende wird alles gut.