Frage an MySQL Profis

dg87

Erfahrenes Mitglied
Ich habe eine Frage. Ist es falsch oder "langsam" wenn ich meinen Query so benutze:
PHP:
select count(zielid) from ungeleseneNachrichten as m where m.zielid = ? and m.createDate <= subdate(curdate(), ?) and m.vonid in (select accountid from user where status <> 2)

die talbes und columns sind nur beispiele.
Oder sollte man den umschreiben. Würde mich interessieren, da ich nie mit joins arbeite, sondern immer so arbeite...
 
Schreibe es zu JOINS um. Ist meistens schneller
(Achja, und mach keine Einzeiler! Das ist UNLESBAR)

SQL:
SELECT 
	COUNT(zielid) 
FROM 
	ungeleseneNachrichten AS m
	INNER JOIN user AS u
		ON m.vonid = u.accountid
WHERE 
	m.zielid = ? 
	AND m.createDate <= SUBDATE(CURDATE(), ?) 
	AND u. status <> 2

PHP SQL-Statement in PHP lesbar darstellen
 
Zuletzt bearbeitet von einem Moderator:
Danke für den Tipp.
Eine abschließende Frage hab ich noch. Führt der erst die Where Clause aus und dann den Join (was ja besser für die Schnelligkeit wäre), oder joint er erst die Tabellen und geht dann an die Bedingungen?
 
Das kann man so ganau nicht sagen. MySQL erstellt sich ein Explian-Plan anhand von Statisitken und arbeitet dann diesen ab.
Du kannst es ja mal den Explian-Plan ausgeben lassen. Dazu einfach phpMyAdmin öffnen, das SQL-Script kopieren und so in das SQL-Feld eingeben
SQL:
EXPLAIN(SELECT....mein Select statement ...);

Aber wenn du nur ein par tausend Datenzeilen hast, kommts eh nicht drauf an.
 
Zuletzt bearbeitet von einem Moderator:
Zurück