Frage

gibt es eine Möglichkeit, die Ergebnisse von zwei verschiedenen Anfragen an einem resultset hinzufügen?

etwas wie folgt aus:

ResultSet rs ;

i=0;

while(i<=l)


  ResultSet rs1 = select * from tablei;

  rs = rs + rs1; 

 i++;

}

Ich weiß, dass ich es mit Union tun kann, aber ich habe viele Anfragen und wenn ich UNION verwenden die Abfrage ist zu langsam.

Jede Idee?

War es hilfreich?

Lösung

Tun Sie eine UNION oder UNION ALL? Letztere sollte nicht viel anders sein, es selbst zu tun (obwohl ich es zu tun erwarten würde, sich langsamer zu sein).

Andere Tipps

Ich glaube nicht, gibt es eine Möglichkeit, eine ResultSet zu einem anderen hinzuzufügen. Sie haben keine Methode in der Klasse, die so etwas tut oder aktualisiert die ResultSet aus dem Code. Resultset sind so ausgelegt, Daten zu empfangen, die von der Datenbank und nicht vom Entwickler Manipulation von Benutzereingaben oder dergleichen.

Mein Vorschlag, die Daten zu einem Array oder etwas ähnliches und manipuliert die Daten in dem Code oder tun, um die Union in der Abfrage zu extrahieren wäre.

Je nachdem, welche Datenzugriff Bibliothek, die Sie verwenden, hat ResultSet eine Methode namens MoveNextRecordSet () und SqlDataReader bietet Nextresult ().

Erstellen einer gespeicherten Prozedur mehrere Ergebnismengen (das heißt mehrere SELECT-Anweisungen in einem sp) zurückzukehren, und Navigation durch die Ergebnismengen unter Verwendung dieser Verfahren.

Ich wäre überrascht, wenn Sie eine Methode gefunden, die eine bessere Leistung als UNION in der Datenbank hat. Union tut, was Sie wollen, und der Datenbankserver wird diese optimiert haben, so gut wie sie können. Sie würden im Wesentlichen das Rad neu zu erfinden werden.

Wenn Ihre UNION zu langsam ist, dann versuchen Sie schaut in, ob Ihre Datenbank mit einem besseren Indizierung tun könnte. Sie sollten auch auf den einzelnen Abfragen einige Timing-Analyse tun, verglichen mit der UNION Option. Ich würde erwarten, dass die eine oder andere Abfragen sind die langsame Bit, anstatt die UNION.

Wenn die Union zu viel Zeit in Anspruch nimmt vielleicht vervollständigen Sie berücksichtigen sollten, Ihre Indizes für die Tabellen zu ändern, die Sie verwenden.

Haben Sie überprüfen Sie Ihre Indexfragmentierung?

Sehen Sie, wenn Sie die richtigen Indizes hinzufügen, wenn Sie die Abfrage auf diese Weise beschleunigen kann. Ich glaube nicht, dass eine Weile so verwendet wird, wird schneller als eine Vereinigung aller.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top