2016-06-01 2 views
2

Zur Zeit bringt mein SQL resultSet etwa 250K Datensätze mit, die verarbeitet werden müssen. Es dauert 25 Sekunden, um den Vorgang abzuschließen. Ich plane, das Multithreading darauf zu machen. Aber die Daten konnten nicht vom ResultSet getrennt werden. Beim googlen sagt es CachedRowSet, aber kein richtiges Beispiel für die Implementierung. Bitte helfen Sie mir dabei. Danke im Voraus.Wie verarbeitet man 250K Datensätze in ResultSet in Multithreading oder anderen schnelleren Weg?

+0

Haben Sie für alle 250K Datensätze warten müssen, bevor er zum nächsten Teil Ihrer Anwendung zu verschieben? Wenn nicht, können Sie den ResultSet-Code in einem anderen Thread ausführen und ein Producer/Consumer-Muster verwenden. –

+0

@karthikeyan Govindaraj Versuchen Sie, die Daten nach festgelegten Maßstäben aufzunehmen. Nimm Daten 1000 nach 1000 (Paginierung). Dann wird es schnell und gibt eine bessere Leistung. –

+0

@KarthikeyanSubramaniam kann ich nicht tun. weil ich von der Verbindung von Tabellen nehme. Also, wenn ich set by set setze, könnte es Chancen geben, den gleichen Rekord wieder zu bekommen, oder? – opensourcegeek

Antwort

0

können Sie eine Abfrage schreiben, indem mehr Tabellen verknüpft und auch versuchen, diese zwei Schlüsselwörter verwenden

FETCH and OFFSET. 
For 1st Ex : fetch = 1, offset = 1000 
For 2nd Ex : fetch = 1001, offset = 1000 

Bitte überprüfen Sie diesen Link https://technet.microsoft.com/en-us/library/gg699618(v=sql.110).aspx

durch den Satz zu holen, nachdem gesetzt von Datenbank Sie können Verwenden Sie Paginierungskonzept Es wird die Benutzeroberfläche in keinem Fall beeinflussen.

Im Falle von Oracle: Sie können es einfach auf 12c tun, indem Sie OFFSET angeben.

In 12c,

SELECT val FROM table ORDER BY val OFFSET 4 ROWS FETCH NEXT 4 ROWS ONLY; 

das gleiche auf 11g und vor zu tun, müssen Sie jeweils ROWNUM zweimal, innere Abfrage undäußere Abfrage verwenden.

Die gleiche Abfrage in 11g,

SELECT val FROM (SELECT val, rownum AS rnum FROM (SELECT val FROM table ORDER BY val) WHERE rownum <= 8) WHERE rnum > 4; 

Hier OFFSET 4.

+0

Woher wissen Sie, dass das OP SQL Server verwendet? –

+0

@Michael Frage karthikeyan govundaraj die Datenbank angeben .. –

+0

Es ist die Oracle-Datenbank. – opensourcegeek

Verwandte Themen