2016-05-23 5 views
7

Was ist der Unterschied zwischen dem Festlegen einer Abrufgröße für Statement vs ResultSet? Die Oracle-Dokumentation besagt, dass, wenn die Abrufgröße für eine Anweisung festgelegt wird, diese auch von ResultSet verwendet wird, solange die Abrufgröße vor dem Abrufen der Ergebnismenge festgelegt wird. Welchen Unterschied macht es, wenn ich es auf Statement oder ResultSet setze? Ich verwende Oracle-Datenbank. Im Folgenden ist der Oracle-Dokumentation über sie:Unterschied zwischen dem Festlegen einer Abrufgröße für Statement vs ResultSet

Fetch Size

standardmäßig, wenn Oracle JDBC eine Abfrage ausgeführt wird, ruft es eine Ergebnismenge von 10 Zeilen gleichzeitig aus der Datenbank-Cursor. Dies ist der Standardwert für die Oracle-Zeilenabrufgröße. Sie können die Anzahl der Zeilen ändern, die bei jeder Fahrt zum Datenbankcursor abgerufen werden, indem Sie den Wert für die Zeilenabrufgröße ändern.

Mit Standard-JDBC können Sie auch die Anzahl der Zeilen angeben, die bei jedem Datenbank-Round-Trip für eine Abfrage abgerufen werden. Diese Nummer wird als Abrufgröße bezeichnet. In Oracle JDBC wird der Zeilenabrufwert als Standardabrufgröße in einem Anweisungsobjekt verwendet. Das Festlegen der Abrufgröße überschreibt die Einstellung für den Zeilenabruf und wirkt sich auf nachfolgende Abfragen aus, die durch dieses Anweisungsobjekt ausgeführt werden.

Die Abrufgröße wird auch in einer Ergebnismenge verwendet. Wenn das Anweisungsobjekt eine Abfrage ausführt, wird die Abrufgröße des Anweisungsobjekts an das von der Abfrage erstellte Ergebnismengenobjekt übergeben. Sie können die Abrufgröße im Ergebnismengenobjekt jedoch auch so festlegen, dass die Anweisungsabrufgröße, die an sie übergeben wurde, überschrieben wird.

Antwort

4

Der einzige Ort, an dem die Abrufgröße wirklich zählt, ist die ResultSet. Wenn eine ResultSet erstellt wird, erhält es seine Abrufgröße von der Statement, die verwendet wurde, um es zu erstellen, aber es kann später geändert werden.

Denken Sie an die Statement Fetch-Größe als Standard, die an alle ResultSet s, die es erstellt wird, übergeben wird. Wenn Sie diese Standardeinstellung nicht verwenden möchten, können Sie sie überschreiben.

1

Es gibt keinen Unterschied. Wenn Sie die Abrufgröße für die Anweisung festlegen, wird sie auf alle ResultSet-Instanzen angewendet, die aus dieser Anweisung stammen.

+0

Es gibt einen kleinen Unterschied. Die für die Anweisung festgelegte Abrufgröße wird für den ersten Abruf verwendet. Zu dem Zeitpunkt, zu dem die Ergebnismenge zurückgegeben wird, ist der erste Abruf abgeschlossen. Die einzige Möglichkeit, die Größe des ersten Abrufs zu steuern, besteht darin, sie in der Anweisung festzulegen. Wenn Sie wissen, dass eine bestimmte Abfrage nur eine Zeile zurückgibt, wird die Abrufgröße auf 1 gesetzt, da die Abrufgröße der Anweisung bereits zum Abrufen der einen Zeile verwendet wurde, bevor der Code auf die festzulegende Ergebnismenge zugreifen kann die Abrufgröße auf eins. –

Verwandte Themen