Klaus: SQL Query optimieren

Beitrag lesen

Ich geh jetzt mal nicht auf den Inhalt an sich ein, das tun ja die anderen Beiträge schon, sondern nur auf das SQL.

Danke.

Der JOIN mit table2 ist zwar hier unnötig, aber wird in einer nachfolgenden Query gebraucht
Das heißt was genau?

Das war nur ein Hinweis, warum der LOIN überhaupt in meiner Query steht. Den könnte man getrost weg lassen.

Du joinst table2 hinzu, mit der Bedingung table2.mID = table1.mID.
Daraus filterst du alles raus, wo table1.mID nicht in table2.mID enthalten ist. Das wäre doch einfacher mit einem INNER JOIN statt LEFT JOIN abgedeckt.

Sehe ich nicht so.
Denn aus Tabelle 1 will ich alle Einträge haben, auch wenn sie in Tabelle 2 keinen "Relationalpartner" haben.
Die würde ich aber über den INNER JOIN mit heraus filtern.

Vielleicht bremst die Subquery mit dem NOT IN das ganze aus. Hast du das schon weggelassen und geschaut wie lange es dann läuft?

Stimmt. Genau diese Subquery ist das Nadelöhr.

Hast du Indexe/Primärschlüssel auf die ID definiert?

In Tabelle 1 und 2 sind die IDs primary Keys.

In Tabelle 3 liegt auf tabelle1_ID ein Index und Tabelle2_ID nicht.

Habe gerade versucht, auch auf Tabelle2_ID einen Index zu legen, aber das schafft phpmyadmin leider nicht. Vermutlich zu viele Einträge drin, aber anders kann ich auf die DB nicht zugreifen.

Klaus