Bobby: SQL Query optimieren

Beitrag lesen

Moin

Ich frage mich, warum diese Abfrage so lange dauert.

Das kann verschiedene Ursachen haben, die du alle nacheinander mal checken solltest:

1. Zuerst einmal die Logik checken. (Da komm ich gleich noch drauf)
2. prüfen ob alles ordentlich indiziert ist und evtl eine Fremdschlüsselbeziehung existiert
3. Die Einstellun der DAenbank prüfen (key-Cache etc) Auch hier kann dies sehr unterschiedlich ausfallen

Die Anzahl der DAtensätze ist erstmal nicht der Grund. diese ist nicht all zu hoch und sollte für eine normale DB machbar sein (Du hast uns ja leider vorenthalten welches BDMS du nutzt)

Nun zur Logik

  
SELECT m.1,m.2,m.3  
FROM table1 m  
LEFT JOIN table2 rc ON rc.mID = m.mID  
LEFT JOIN table3 r ON rc.rID = r.rID  
WHERE m.5 != ''

Hier gibt es die erste ungereimtheit. Wenn Table 3 die Zuordnungstabelle ist, sollte diese entweder die Grundtabelle oder zumindest die 2. Tabelle sein die abgefragt wird. Den dann folgenden Teil kann ich nicht richtig nachvollziehen

AND  
m.mID NOT  
IN (  
SELECT mID  
FROM table2 WHERE mID IS NOT NULL  
)

Du fragst nochmals die Tabelle 2 (mit den Vereinen) und möchtest nicht, das die Id des Spielers = der ID des Vereines ist? Sorry, das kommt mir etwas unlogisch vor.

hab ich da was falsch verstanden?

Gruß Bobby

--
-> Für jedes Problem gibt es eine Lösung, die einfach, sauber und falsch ist! <-
### Henry L. Mencken ###
-> Nicht das Problem macht die Schwierigkeiten, sondern unsere Sichtweise! <-
### Viktor Frankl ###
ie:{ br:> fl:{ va:} ls:< fo:) rl:( n4:( de:> ss:) ch:? js:( mo:} sh:) zu:)