Hopsel: (SQL) Abfrage optimieren (und weiter gehts...)

Beitrag lesen

Hi Frank!

Wenn du mehrfach von den selben Tabellen selektierst, wie soll dann (ohne Alias) mssql wissen, welche Tabelle du meinst?

Ich selektiere aber nur jeweils einmal von je einer Tabelle. Oder nicht...?
Einmal aus ADRESSEN und im Subquery einmal aus ADRESSGRU. Wozu benötige ich hier Aliase? Ich finde ehrlich gesagt auch nichts in dem dicken SQL-Handbuch über Aliase ( bzw. nur über Datenbankaliase, aber die sind hier ja wohl kaum gemeint).

Und worin liegt der Unterschied zwischen den Queries? Was sagen die Ausführungspläne?

SELECT ADRESSEN.IDNR, ADRESSEN.INFO /*, [...]*/ FROM ADRESSEN  
WHERE ADRESSEN.IDNR in (SELECT ADR_ID FROM ADRESSGRU WHERE GR_ID in (5,39,3,10,1) ) ORDER BY NAME1 ASC  
  
SELECT * FROM ADRESSEN  
WHERE ADRESSEN.IDNR in (SELECT ADR_ID FROM ADRESSGRU WHERE GR_ID in (5,39,3,10,1) ) ORDER BY NAME1 ASC

Einziger Unterschied: Einmal explizite Angabe der Spalten, einmal mit *.
Ausführungsplan zeigt mir jeweils 50%.

Die erste Abfrage ist aber eindeutig schneller.

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:)