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.
Stimmt. Aber mit deinem NOT IN in der WHERE Klausel filterst du sie ja dann doch noch heraus.
Stimmt. Genau diese Subquery ist das Nadelöhr.
Und genau diese Subquery könntest du ersetzen durch einen JOIN mit table2 mit der ID als Bedingung und WHERE table2.ID IS NULL. Aber wenn du das tust, filterst du dir nunmal genau die Einträge raus, die du mit dem INNER JOIN erst gar nicht hättest.
Oder täusch ich mich hier so sehr und hab nur nicht verstanden was passieren soll? Falls es so ist, klärt mich bitte auf.
Habe gerade versucht, auch auf Tabelle2_ID einen Index zu legen, aber das schafft phpmyadmin leider nicht. Vermutlich zu viele Einträge drin
Laut deine Eingangspost sind da 6500 Zeilen drin. Das ist nicht wirklich viel. Genau dieser Index wäre sehr wichtig. Wenns wirklich nicht gehen sollte, was du unbedingt nochmal untersuchen solltest, nenne table2 um, erzeuge eine neue mit Index, kopiere die Daten um und lösche dann die bisherige Tabelle.