sql >> Databáze >  >> RDS >> Sqlserver

Nastavte výchozí přednačítání řádků v SQL Server pomocí ovladače JDBC

Obvyklé způsoby nastavení velikosti načítání řádku jsou:

  1. Prostřednictvím java.sql.Connection vlastní metoda třídy implementace dodavatele (např. OracleConnection.setDefaultRowPrefetch )
  2. Prostřednictvím java.sql.Statement.setFetchSize(int) :dává ovladači nápovědu ohledně velikosti načtení řádku pro všechny ResultSets získané z tohoto Statement . Tuto metodu zdědí PreparedStatement a CallableStatement . Většina ovladačů JDBC to podporuje.
  3. Prostřednictvím java.sql.ResultSet.setFetchSize(int) :dává ovladači nápovědu ohledně velikosti načtení řádku pro všechny tyto ResultSet .

Ovladač MS SQL Server JDBC nepodporuje žádný z těchto způsobů:

  1. Ovladač MSSQL žádnou takovou metodu nemá.
  2. Zatímco většina ovladačů tuto nápovědu respektuje, ovladač MSSQL bohužel ne. Takže pro vás neužitečné. Viz Co metoda Statement.setFetchSize(nSize) skutečně znamená udělat v ovladači SQL Server JDBC?
  3. Stejný problém jako Statement .

Ve výchozím nastavení načte vše řádků z databáze, pokud neurčíte typ kurzoru v ovladači JDBC. Ovladač MSSQL nemůže přímo ovládat velikost načtení pomocí obvyklých metod.

Řešení:

  • Odešlete Statement na SQLServerStatement a použijte metodu setMaxRows(int) . Proč to neimplementovali v rámci standardní metody Steve Ballmer jen ví;^)
  • Vytvořte ovladač s typem kurzoru. Výchozí velikost načtení pro kurzor je 1. Nastavte Connection string property selectMethod=cursor . Případně můžete vytvořit Statement s com.microsoft.sqlserver.jdbc.SQLServerResultSet.TYPE_SS_SERVER_CURSOR_FORWARD_ONLY rolovatelnost pro přístup pouze pro dopředný přístup, pouze pro čtení a poté použijte setFetchSize způsob ladění výkonu. http://technet.microsoft.com/en -us/library/aa342344%28SQL.90%29.aspx
  • Použijte (proprietární) SQL k omezení počtu vrácených řádků (to není totéž jako nastavení velikosti načtení ):SET ROWCOUNT nebo SELECT TOP N
  • Přepněte na open source jTDS ovladač, speciálně vyrobený pro překonání problémů ovladače SQL Server. Je to vynikající řidič.



  1. Vložit do tabulky z kolekce typu oracle 12c - ORA-00902:neplatný datový typ

  2. Podvýběr v oracle

  3. MYSQL - Nelze vytvořit externí klíč

  4. PHP MySQL vkládání dat do více tabulek