Thema: Delphi SQL-Abfrage optimieren

Einzelnen Beitrag anzeigen

Benutzerbild von Xong
Xong

Registriert seit: 9. Jan 2008
186 Beiträge
 
Delphi 2006 Professional
 
#7

Re: SQL-Abfrage optimieren

  Alt 27. Feb 2008, 12:55
Zitat von Union:
Dann fällt auf jeden Fall das schreckliche SELECT * weg - das wäre für mich der erste Optinierungsschritt.
Kannst du das für mich noch begründen. =)

Ich hab drei unterschiedliche Möglichkeiten für Abfragen erstellt:
SQL-Code:
SELECT *
FROM ADRESSEN
WHERE ADRESSEN.IDNR IN (
   SELECT DISTINCT IDNR
   FROM ADRESSEN
      INNER JOIN ADRESSGRU ON
         (ADRESSEN.IDNR = ADRESSGRU.ADR_ID) AND
         GR_ID in (2,3 /* [...] */)
)
ORDER BY NAME1 ASC

SQL-Code:
SELECT *
FROM ADRESSEN
WHERE ADRESSEN.IDNR IN (
   SELECT IDNR
   FROM ADRESSEN
      INNER JOIN ADRESSGRU ON
         (ADRESSEN.IDNR = ADRESSGRU.ADR_ID) AND
         GR_ID in (2,3 /* [...] */)
   GROUP BY IDNR
)
ORDER BY NAME1 ASC

SQL-Code:
SELECT *
FROM ADRESSEN
WHERE IDNR in (
   SELECT ADR_ID
   FROM ADRESSGRU
   WHERE GR_ID in (2,3 /* [...] */)
)
ORDER BY NAME1 ASC
Diese Abfrage ist nach einem simplen Test am performantesten. Spricht etwas dagegen, mit der Unterabfrage zu arbeiten?
Kann man das noch weiter optimieren? (Sieht fast so aus wie die von alzaimar, dessen Abfrage ähnlich schnell ist.)

LG,
Xong
  Mit Zitat antworten Zitat