[MySQL] Performance

VanHellsehn

Erfahrenes Mitglied
Hi Leute,

Ich habe folgende Tabellen beziehungen:
Code:
tabelle_A
	1 zu N
tabelle_B
	1 zu N
tabelle_C
	1 zu N
tabelle_D

Ich fange bei tabelle_A an runter immer 1 zu N zu Joinen.
Das heißt ich habe ungefähr eine eine MySQL-Anfrage:

SQL:
SELECT
	*
FROM
	tabelle_A
JOIN
	tabelle_B ON tabelle_A.fk = tabelle_B.id
JOIN
	tabelle_C ON tabelle_B.fk = tabelle_C.id
JOIN
	tabelle_D ON tabelle_B.fk = tabelle_D.id

Dann würde man ja in jedem Datensatz die gleichen dann von tabelle_A und ...
Ist das den die obtimale Lösung solch eine Abfrage zu lösen, oder sollte man sich die Daten aus tabelle_A zien und dann für jeden FK jeweils eine eigene Abfrage los schicken..

WIe löst man das ganze am besten?

Danke an alle Tipps =)
 
Alles in einem ist schon am besten.
Wenn du einen Filter in der Tabelle D oder C oder so hast, dann lohnt es sich manchmal diesen in einer Unterabfrage zu machen. Man kann aber keine allgemiengültige AUssage machen.

SQL:
-- Beispiel: Filter auf tabelle_D
SELECT
    *
FROM
    tabelle_A
    INNER JOIN tabelle_B 
        ON tabelle_A.fk = tabelle_B.id
    INNER JOIN  tabelle_C 
        ON tabelle_B.fk = tabelle_C.id
    INNER JOIN (
            SELECT
                *
            FROM
                tabelle_D
            WHERE
                name LIKE 'Test%'
    ) AS d
        ON tabelle_B.fk = d.id

Ein weiterer Performance-Fresser ist auch das *. Besser die Spalten die man wirklich braucht angeben.

Des weiteren natürlich Indexe
 
Zuletzt bearbeitet von einem Moderator:

Neue Beiträge

Zurück