Axel Richter: Join Abfrage unheimlich langsam

Beitrag lesen

Hallo,

Ganz einfach: alle swas hinter WHERE, OR oder AND steht muss indiziert sein, dann gehts schnell.
Wie meinst du das mit indiziert? Habe alle Spalten aus der Where als Index gesetzt aber kein Erfolg. Dauert immer noch zu lange die Abfrage. Ein normaler Join braucht ca 0,5 sec und meine Abfrage ca 5
Sec. Das ist zu lange.

Was vergleichst Du hier?

Wenn Du die Anforderungen an Dein Resultset mit einem normalen Join erfüllen könntest, brauchtest Du keinen Outer-Join. Das musst Du natürlich zuerst klären. Also: Einen Outer-Join setzt man _nur_ ein, wenn es keine andere Möglichkeit gibt.

Wenn Du einen Outer-Join brauchst, muss Dir klar sein, dass dieser länger brauchen muss, als ein optimierter Standard-Join. Bei den vielen Nebenbedingungen, die Du da abprüfst, kann das schon mal 10 Mal solange sein.

Noch andere Ideen? Kannst du mir das mit dem Inizieren genauer beschreiben? vielleicht habe ich da was falsch gemacht.

http://www.mysql.de/doc/de/CREATE_INDEX.html

Du könntest natürlich auch nochmal über den Tabellenaufbau nachdenken. Helfen kann man Dir dabei allerdings nur, wenn Du mal den richtigen aktuellen Stand zeigst und näher beschreibst, welche Datensätze Du als Resultat herausziehen willst. Dein Create Table vom Ausgangsposting kann nämlich nicht zum SQL-Satement passen. Es gibt dort z.B. die Spalten B.auf_index und A.auf_typ gar nicht.

viele Grüße

Axel