Legen Sie eine Standard-prefetch-Zeile in SQL Server mithilfe von JDBC-Treiber
Ich habe eine Anwendung wo ich will, zu definieren, die die Standard-Anzahl der Zeilen-prefetch-für eine Verbindung, mit für beide Oracle-und SQL Server-Treiber. Der Oracle-Treiber hat die OracleConnection
- Schnittstelle bietet setDefaultRowPrefetch
Methode, es zu tun, aber ich habe nichts gefunden, äquivalent für den SQL Server-Treiber.
Es ist eine Methode zu definieren, die die Standard-Zeilen-prefetch für eine Verbindung mithilfe der SQL Server-JDBC-Treiber?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Den üblichen Möglichkeiten zum einstellen row fetch-Größe:
java.sql.Connection
Verkäufer Implementierung der Klasse benutzerdefinierte Methode (z.B.OracleConnection.setDefaultRowPrefetch
)java.sql.Statement.setFetchSize(int)
: gibt einen Hinweis auf die Fahrer als auf die Zeile, die fetch-Größe für alleResultSets
erhaltenStatement
. Diese Methode wird vererbtPreparedStatement
undCallableStatement
. Die meisten JDBC-Treiber es unterstützen.java.sql.ResultSet.setFetchSize(int)
: gibt einen Hinweis auf die Fahrer als auf die Zeile, die fetch-Größe für alle dieseResultSet
.MS-SQL-Server-JDBC-Treiber unterstützt keine dieser Möglichkeiten:
Statement
.Standardmäßig ruft alle die Zeilen aus der Datenbank, wenn Sie angeben, cursor-Typ, der JDBC-Treiber. MSSQL-Treiber kann nicht direkt Steuern die fetch-Größe mit den üblichen Methoden.
Lösungen:
Statement
zuSQLServerStatement
und verwenden Sie die MethodesetMaxRows(int)
. Warum Sie nicht implementieren diese in die standard-Methode Steve Ballmer nur weiß ;^)Connection
string-EigenschaftselectMethod=cursor
. Alternativ können Sie dieStatement
mitcom.microsoft.sqlserver.jdbc.SQLServerResultSet.TYPE_SS_SERVER_CURSOR_FORWARD_ONLY
Scroll-Fähigkeit für forward-only, nur-lese-Zugriff, und verwenden Sie dann diesetFetchSize
Methode, um die Leistung zu optimieren. http://technet.microsoft.com/en-us/library/aa342344%28SQL.90%29.aspxSET ROWCOUNT
oderSELECT TOP N
&defaultRowFetchSize=XX
(beachten Sie aber, dass ist nicht genug, müssen Sie auch entweder setzen Sie autocommit standardmäßig deaktiviert (eine andere Abfrage param) oder variieren Sie es für es zu "nehmen", seltsam...