Einzelnen Beitrag anzeigen

Delphi.Narium

Registriert seit: 27. Nov 2017
2.490 Beiträge
 
Delphi 7 Professional
 
#30

AW: in-Klausel in großen Tabellen

  Alt 8. Feb 2019, 23:42
Zumndest Oracle begrenzt die "in-Menge" auf 2000 Einträge.
Wenn ich mich recht erinnere aber nur, wenn man sie im SQL auflistet, nicht jedoch als Ergebnismenge einer Abfrage.

select * from tabelle where Spalte in ('1','2', ... ,'2000') mit hier aufgeführen 2000 Werten müsste funktionieren, nicht jedoch select * from tabelle where Spalte in ('1','2', ... ,'2001') mit hier aufgeführten mehr als 2000 Werten. select * from tabelle where Spalte in (select anderespalte from anderetabelle) sollte auch noch bei ein paar millionen Datensätzen funktionieren, wenn auch nicht unbedingt sehr schnell.

Von den hier bisher aufgeführen Lösungsvorschlägen müssten eigentlich einige zum richtigen Ergebnis führen. Einziger Unterschied dürfte die Laufzeit der jeweiligen Abfrage sein.

Unter Oracle ware bisher eigentlich meist die Variante mit dem ... where exists (select 1 from ... am Schnellsten, da hier nur eine Existenzprüfung nötig ist. Ein Distinct muss die gesamte Datenmenge "durchgehen", sortieren und damit dann eine Eindeutigkeit sicherstellen. Das dauert meist länger, als "nur" nachzuschauen, ob es da überhaupt einen passenden Satz gibt.
  Mit Zitat antworten Zitat