Chris: Subquery eigentlich unkorreliert, MySQL meint aber korreliert

Beitrag lesen

Hallo _King Lully

Wie ist denn eine dependent und eine independent subquery definiert?

Definition aus der Doku von MySQL:

Eine "korrelierte Unterabfrage" ist eine Unterabfrage, die eine Tabelle referenziert, die auch in der äußeren Abfrage erscheint.

Ich habe hier die Def. einer "korrelierten", weil bei EXPLAIN zu finden ist:

DEPENDENT bezeichnet normalerweise die Verwendung einer korrelierten Unterabfrage.

In der äußeren Abfrage wird die Tabelle "products" referenziert, in der inneren die Verknüpfungstabelle "prods_lists" und nirgends die Tabelle "products" der äußeren Abfrage. Also ist die Subquery INdependent. So sehe ich das.

Eventuell einen Index auf 'id_products' in 'prods_lists' setzen.

id_products ist PRIMARY KEY in der Tabelle "products". In der Verknüpfungstabelle gibt es einen gemeinsamen Index auf die Felder "id_products" und "id_lists", so wie es sich für eine Verknüpfungstabelle gehört.

Für "possible_keys" nennt MySQL beim äußeren select "NULL", bei "keys " aber "PRIMARY".

Was heisst das denn?

Das frage ich mich auch. Warum findet MySQL keinen möglichen Key, verwendet dann aber doch einen? In der Doku hatte ich auch lange gesucht, aber außer einer trivialen Beschreibung von "possible_keys" (das sind die Keys, die für MySQL in Frage kommen) habe ich nichts gefunden.

(Ach ja, bitte sinnvolle variablennamen wählen!)

Ich weiß leider nicht, was du damit meinst. Primary Keys nenne ich immer so "id_<TabellenName>" und in der Verknüpfungstabelle ist "id_products" ein Fremdschlüssel.

Schöne Grüße
Chris