Wir haben ein Registrierungssystem Datenbank und im Grunde, was diese Abfrage tut, überprüft die Schüler, die in der Klasse sind, so dass sie als abwesend markiert werden können, wenn sie abwesend sind. Aus irgendeinem Grund dauert es 30 Sekunden. Weiß jemand warum?Abfrage dauert 30 Sekunden lang
FROM Stdts
LEFT JOIN StdtReg ON StdtReg.StdtID = Stdts.ID
LEFT JOIN usrs ON StdtReg.userID = usrs.ID
WHERE (SELECT ID FROM ClssInstncEnrol cie WHERE cie.status = 0 AND classInstanceID={$_GET['ci']} AND StdtID = Stdts.ID LIMIT 1) IS NOT NULL
OR (SELECT ID FROM DropIns di WHERE di.type <> -1 AND classInstanceID= {$_GET['ci']} AND StdtID = Stdts.ID LIMIT 1) IS NOT NULL
AND (CONCAT(Stdts.firstName, ' ', Stdts.lastName) OR CONCAT(usrs.firstName,' ', usrs.lastName))
ORDER BY firstName, lastName
Unterabfragen, Berechnungen (CONCAT) in jeder Zeile, und ich würde auch nicht genügend Indizes setzen. – ceejayoz
Versuchen Sie, eine 'explain' in der Abfrage zu machen und sehen Sie, welche Indizes (falls vorhanden) verwendet werden. –
Dieser Code sollte null Sekunden dauern und sofort einen Fehler auslösen, da es keine gültige Abfrage ist :) –