Optimieren von MYSQL-Code
programmer
- php
Hallo zusammen
Ich habe einen Online-vokabeltrainer gebaut. habe ich die Vokabeln in Bücher, Lektionen und als kleinste Einheit Wörter gegliedert.
Bei der Übersicht der Bücher möchte ich die Anzahl Wörter anzeigen, die in dem entsprechenden Buch sind. Dabei habe ich diesen Mysql-Code:
SELECT (
SELECT count( * )
FROM lektionen
WHERE buchid = buecher.id
) AS lektionen, (
SELECT count( * )
FROM woerter
WHERE lektionenid
IN (
SELECT id
FROM lektionen
WHERE buchid = buecher.id
)
) AS woerter
FROM buecher
WHERE userid = '1'
Mein Problem ist nun: Dieser code braucht zur Ausführung 5.9 Sekunden. Das ist viel zu lang. Ich weiss nur nicht, wie ich diesen Code optimieren kann. Oder geht das gar nicht?
Vielen Dank schon im Voraus
Hallo,
Mein Problem ist nun: Dieser code braucht zur Ausführung 5.9 Sekunden. Das ist viel zu lang. Ich weiss nur nicht, wie ich diesen Code optimieren kann.
verwende Joins und setze sinnvolle Indexe. Prüfe, ob diese genutzt werden.
Freundliche Grüße
Vinzenz
moin,
Bei der Übersicht der Bücher möchte ich die Anzahl Wörter anzeigen, die in dem entsprechenden Buch sind. Dabei habe ich diesen Mysql-Code:
korellierte unterabfragen sind schon der richtige weg, aber ein wenig anders geschrieben. wichtig ist aber, dass geeignete indexe vorhanden sind.
SELECT (SELECT COUNT(*)
FROM lektionen l
INNER JOIN woerter w ON w.lektionenid = l.id
WHERE l.buchid = b.id
) AnzahlWoerter
FROM buecher b
WHERE userid = '1'
;
Ilja