Hopsel: (SQL) Abfrage optimieren

Beitrag lesen

Hi Ilja!

das distinct ist nicht zwingend notwendig in deinem falle, kanst es weglassen, wenn du mit einer unterabfrage arbeitest.

Ja. Gleich mehr dazu.

du benutzt in der unterbabfrage die gleiche tabelle wie in der oberen, wo sind den deine aliasnamen für die gleichnamigen tabellen ?

In der Unterabfrage wird ADRESSGRU genutzt, das Abfrageergebnis ist aber aus der Tabelle ADRESSEN.

Ich hab drei unterschiedliche Möglichkeiten für Abfragen erstellt:

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
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?

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

MfG H☼psel

--
"It's amazing I won. I was running against peace, prosperity, and incumbency."
George W. Bush speaking to Swedish Prime Minister unaware a live television camera was still rolling, June 14, 2001
Selfcode: ie:% fl:( br:> va:) ls:& fo:) rl:? n4:& ss:| de:] js:| ch:? sh:( mo:) zu:)