I soliti modi per impostare la dimensione del recupero delle righe sono:
- Tramite
java.sql.Connection
classe di implementazione del fornitore metodo personalizzato (ad es.OracleConnection.setDefaultRowPrefetch
) - Tramite
java.sql.Statement.setFetchSize(int)
:fornisce un suggerimento al driver per quanto riguarda la dimensione del recupero della riga per tutti iResultSets
ottenuto da questaStatement
. Questo metodo è ereditato daPreparedStatement
eCallableStatement
. La maggior parte dei driver JDBC lo supporta. - Tramite
java.sql.ResultSet.setFetchSize(int)
:fornisce un suggerimento al conducente per quanto riguarda la dimensione del recupero della riga per tutto questoResultSet
.
Il driver JDBC di MS SQL Server non supporta nessuno di questi modi:
- Il driver MSSQL non dispone di tale metodo.
- Sfortunatamente, mentre la maggior parte dei driver rispetta il suggerimento, il driver MSSQL non lo fa. Quindi non è utile per te. Vedi Che cosa fa davvero il metodo Statement.setFetchSize(nSize) fare nel driver JDBC di SQL Server?
- Stesso problema di
Statement
.
Per impostazione predefinita, recupera tutto le righe dal database a meno che non si specifichi il tipo di cursore nel driver JDBC. Il driver MSSQL non può controllare direttamente la dimensione del recupero usando i metodi usuali.
Soluzioni:
- Trasmetti la tua
Statement
aSQLServerStatement
e usa il metodosetMaxRows(int)
. Perché non l'hanno implementato all'interno del metodo standard Steve Ballmer sa solo;^) - Crea il tuo driver con un tipo di cursore. La dimensione di recupero predefinita per un cursore è 1. Imposta il
Connection
proprietà stringaselectMethod=cursor
. In alternativa, puoi creare laStatement
concom.microsoft.sqlserver.jdbc.SQLServerResultSet.TYPE_SS_SERVER_CURSOR_FORWARD_ONLY
scorrimento per l'accesso in sola lettura e in avanti, quindi utilizzaresetFetchSize
metodo per ottimizzare le prestazioni. http://technet.microsoft.com/en -us/library/aa342344%28SQL.90%29.aspx - Utilizza SQL (proprietario) per limitare il numero di righe restituite (non è la stessa cosa che impostare la dimensione del recupero ):
SET ROWCOUNT
oSELECT TOP N
- Passa all'open source jTDS driver, appositamente realizzato per superare i problemi del driver di SQL Server. È un pilota superiore.