ich so etwas wie die folgende Struktur haben: Tabelle 1 -> Table2 Beziehung 1: mersten N unterschiedlichen Zeilen ohne innere wählen Sie wählen in oracle
ich ähnlich wie die nächsten Abfragen durchführen müssen:
select Table1.id from Table1 left outer join Table2 on (Table1.id1 = Table2.id2) where Table2.name like '%a%' and rownum < 11
dh ich möchte die ersten 10 IDs aus Tabelle 1, die die Bedingungen in Tabelle 2 erfüllt. Das Problem ist, dass ich distinct verwenden muss, aber die distinct-Klausel gilt nach 'rownum < 11', so dass das Ergebnis z. 5 Datensätze, auch wenn ihre Zahl mehr als 10.
Die scheinbare Lösung ist die folgende verwenden:
select id from (select Table1.id from Table1 left outer join Table2 on (Table1.id1 = Table2.id2) where Table2.name like '%a%') where rownum < 11
Aber ich habe Angst vor Leistung einer solchen Abfrage. Wenn Tabelle1 etwa 300k Datensätze enthält und Tabelle2 etwa 700k Datensätze enthält, wäre eine solche Abfrage nicht wirklich langsam?
Gibt es eine andere Abfrage, aber ohne innere Auswahl? Unglücklicherweise möchte ich vermeiden, innere Auswahl zu verwenden.
Wäre eine solche Abfrage nicht wirklich langsam? Wenn ich wüsste, wie langsam * wirklich * langsam ist, könnte ich die Frage beantworten. –