Jan: Langsames SQL; Wie schneller machen?

Beitrag lesen

Hallo Leute!

Ich habe 3 Tabellen (DB -> MySQL, Auslese mit PHP):

Zum einen eine Kundentabelle, die so aussieht: KID, Firma
Dann eine Gruppentabelle, welche so aussieht: GID, Gruppe
Und dann eine "Beziehungstabelle": BID, GID, KID

Nun kann es eben sein, dass es für eine Firma mehrere Beziehungen gibt, weil sie mehreren Gruppen angehört.

Nun gibt es eine Liste, in der die Firmen den Gruppen entsprechend anders gekennzeichnet werden. Hier greife ich auf 4 Gruppen zu.

Momentan mache ich es so:

SELECT * From Kundentable

Und dann bei jedem Durchlauf:

SELECt * FROM Beziehungstable WHERE KID = FirmenID And (GID = 3 or GID = 7 or GID 11 Or GID 20).

So bekomme ich eine Liste aller Beziehung und kann anhand dieser abprüfen, welchen der gewünschten Gruppen sie angehört oder nicht.

Nun ist der Aufbau der Seite extrem langsam (es listet etwa 200 Firmen auf), und die Kundenanzahl wird in nächster Zeit stark ansteigen.

Meiner Meinung nach liegt es u.a. auch an dieser SQL-Verschachtelung.

Wie könnte ich dies nun in ein SQL zusammenfassen, damit ich in etwa so ein Ergebnis bekomme:

Firma          G1    G2    G3    G4
-----------------------------------
Musterfirma    0     1     1     0

0 stünde hier für "Nein: nicht vorhanden", und 1 eben für "Ja: vorhanden".

Ein Grund, wieso die Seite recht langsam lädt ist wohl auch der, dass die Auflistung als eigenes <table> in einer <td> erfolgt, so erscheint die Liste erst, wenn sie komplett geladen ist, und somit erscheint auch der Rest der Seite erst am Schluss, was während des Ladens (etwa 7 Sekunden) etwas langweilig wirkt.

lg, Jan