sql >> Databasteknik >  >> RDS >> Sqlserver

Varför tar Microsoft SQL Server 2012-frågan några minuter över JDBC 4.0 men sekund(er) i Management Studio?

Den adaptiva buffringen är ett bra svar. Jag skulle också rekommendera att kontrollera anslutningarnas SET alternativ via SQL Server Profiler.

När du startar en spårning, se till att ExistingConnections är vald. Jämför ett SPID från en JDBC-anslutning och en SSMS-anslutning. ARITHABORT kommer att tänka på som en som jag har sett orsaka en skillnad i prestanda mellan SSMS och JDBC-drivrutin. Microsoft nämner det kort här:http://msdn.microsoft.com/en-us/library/ms190306.aspx. Stack Exchange-information här:https://dba.stackexchange.com/questions/9840/why-would-set-arithabort-on-dramatically-speed-up-a-query

På Oracle har jag sett enorma effekter genom att spela med setFetchSize metod på Statement / PreparedStatement objekt. Uppenbarligen stöder inte SQL Server-drivrutinen den metoden. Det finns dock en intern metod i drivrutinen för det. Se Ange en standardradförhämtning i SQL Server med JDBC-drivrutinen för mer information.

Dessutom, vad gör du i din while (rs.next()) slinga? Försök inte göra något annat än att läsa en kolumn, som rs.getInt(1) . Se vad som händer. Om det flyger tyder det på att flaskhalsen ligger i din tidigare bearbetning av resultatuppsättningen. Om det fortfarande är långsamt måste problemet finnas i drivrutinen eller databasen.

Du kan använda SQL Server Profiler för att jämföra körningarna när de kommer in via JDBC och när du kör den via SSMS. Jämför CPU, läsning, skrivning och varaktighet. Om de är olika så är exekveringsplanen förmodligen annorlunda, vilket pekar mig tillbaka till det första jag nämnde:SET alternativ.



  1. Vad är det bästa sättet att lagra mediefiler i en databas?

  2. Hur man hittar sorteringen i MySQL

  3. Hur man ställer in maxrekursionsalternativet för en CTE i en tabellvärderad-funktion

  4. Tidsgränsen för att få lås väntan har överskridits; försök starta om transaktionen trots att jag inte använder en transaktion