Abfrage dauert lange (10s)

querytail

Erfahrenes Mitglied
Guten morgen,

ich habe eine Abfrage, die ungewöhnlich lange dauert:

Code:
SELECT Werte.id, Werte.name AS wert 
FROM alle_werte2 AS Werte 
WHERE 1 AND MeineWerte.wertid2 = '.$sWertId.' AND MeineWerte.wert != '' OR NeueWerte.wertid2 = '.$sWertId2.' 
AND NeueWerte.wert != '' 
ORDER BY MeineWerte.name, NeueWerte.name, Werte.name

Kann mir jemand sagen, woran das liegt?

Danke

querytail
 
Zuletzt bearbeitet:
SQL:
WHERE 
	1 		-- Ergibt immer True
	AND MeineWerte.wertid2 = '.$sWertId.' 
	AND MeineWerte.wert != '' 
	OR NeueWerte.wertid2 = '.$sWertId2.' 
	AND NeueWerte.wert != ''
Ein OR inmitten von AND. Weisst du da wirklich noch nach was er alles filtert (ich nicht, ich müsste testen)? Wenn du OR hast, solltest du mal mit Klammern arbeiten.

Ich glaube mal, dass es etwa das sein könnte
SQL:
WHERE 
	NeueWerte.wertid2 = '.$sWertId2.' 
	OR (
		MeineWerte.wertid2 = '.$sWertId.' 
		AND MeineWerte.wert != '' 
		AND NeueWerte.wert != '' 
	)


Allgemein gilt zur Performance:

Performance-Verbesserungen sind keine eindeutige und einfache Sache. Es ist ein testen und heran tasten. Auswerten von Explainplans, SQL umschreiben - ggf. total umschreiben, weiter testen, Anzahl Datensätze der Tabelle vergleichen, ggf. Subqueries machen um die Datenmenge so früh wie möglich klein zu kriegen etc.
Also, so einfach *schnipp*und ein SQL ist schnell - das kannst du vergessen. Diese ganzen Punkte die ich aufgezählt habe gehen auch nicht einfach so mit im Forum hin und her schreiben. Lies dich in das Thema ein. Versuch es zu verstehen. Und dann setz dich hin und probier dich durch.
 
Zuletzt bearbeitet von einem Moderator:
Hallo & Dankeschön,

das werde ich mal testen.

Grüße

querytail

PS: Geht so schon mal schneller.
 
Zuletzt bearbeitet:

Neue Beiträge

Zurück