Sofern ich nicht ernsthaft missverstanden habe, ist die Logik in der Frage sehr fehlerhaft
Wenn es in B 20 Zeilen für jedes A gibt, impliziert eine 1000-Zeilen in A 20.000 Zeilen in B. Es können nicht nur 100 Zeilen in B vorhanden sein, es sei denn, es gibt viele-viele-Tabellen "AB" mit 20.000 Zeilen, die die Zuordnung enthalten .
Um alle Informationen darüber zu erhalten, welche 20 der 100 B-Zeilen jeder A-Zeile zugeordnet sind, geben Sie auch AB ein. Das wäre also entweder:
- 3 Ergebnismengen mit 100, 1000 und 20.000 Zeilen und ein Client JOIN
- eine einzelne verknüpfte A-AB-B-Ergebnismenge mit 20.000 Zeilen
"JOIN" im Client bietet also einen Mehrwert, wenn Sie die Daten untersuchen. Nicht dass es keine schlechte Idee wäre. Wenn ich ein Objekt aus der Datenbank abgerufen habe, ist es möglicherweise sinnvoller, es in separate Ergebnismengen aufzuteilen. Bei einem Berichtstyp würde ich ihn fast immer zu einem reduzieren.
Auf jeden Fall würde ich sagen, dass eine Kreuzverbindung dieser Größenordnung fast keinen Sinn hat. Es ist ein schlechtes Beispiel.
Sie müssen sich irgendwo anmelden, und darin sind RDBMS gut. Ich möchte nicht mit einem Client-Code-Affen arbeiten, der glaubt, dass er es besser machen kann.
Nachgedacht:
Für die Teilnahme am Client sind persistente Objekte wie DataTables (in .net) erforderlich. Wenn Sie eine abgeflachte Ergebnismenge haben, kann diese über etwas Leichteres wie einen DataReader verwendet werden. Hohes Volumen = viele Clientressourcen, die verwendet werden, um eine Datenbankverbindung zu vermeiden.