Einzelnen Beitrag anzeigen

nahpets
(Gast)

n/a Beiträge
 
#27

Re: Optimierung einer SQL-Abfrage

  Alt 10. Okt 2008, 11:25
Hallo,

ausgehend von meinen Vorschlägen habe ich keine Idee, wie man an den besten von 11 Treffern kommen soll, wenn man das Ergebnis nicht sortiert, hier müsste man ja dann jeweils die gesamte Ergebnismenge durchsuchen, das kann es noch nicht sein.

Würde dann sowas reichen?
SQL-Code:
Select
  b.Nummer
from Tabelle50Mio a,
     Tabelle5Mio b
where a.Nummer in (b.Nummer, b.N10, b.N9, b.N8, b.N7, b.N6, b.N5, b.N4, b.N3, b.N2, b.N1)
Dann müsste hier ja nurnoch in der Ergebnismenge nach einem Treffer gesucht werden, auch wenn es ggfls. bis zu 11 geben könnte.
SQL-Code:
select * from tabelle5Mio
where exists
(
  Select
    b.Nummer
  from Tabelle50Mio a,
       Tabelle5Mio b
  where a.Nummer in (b.Nummer, b.N10, b.N9, b.N8, b.N7, b.N6, b.N5, b.N4, b.N3, b.N2, b.N1)
)
Das sollte dann mit der redundanten Ablage von N1 bis N10 und entsprechenden Indexen (oder Indizes, was ist da eigentlich richtig?) razfaz gehen.
Das innere SQL in 'ne temporäre Tabelle, die mit Index auf Nummer und aktuellen Statistiken, spart dann auch noch das ggfls. für exists erforderliche sortieren.
Na, da stellt sich ja dann demnächst die Frage: Was hat länger gedauert, unsere Diskussion oder das Programm zum auswerten der Daten über den vollen Datenbestand
  Mit Zitat antworten Zitat