Ik had een soortgelijk probleem, met een heel eenvoudig verzoek (SELECT . FROM . WHERE =.) dat tot 10 seconden duurde om een enkele rij te retourneren bij gebruik van een jdbc-verbinding in Java, terwijl het slechts 0,01s in sqlshell kostte. Het probleem was hetzelfde, of ik nu de officiële MS SQL-driver of de JTDS-driver gebruikte.
De oplossing was om deze eigenschap in te stellen in de jdbc url :sendStringParametersAsUnicode=false
Volledig voorbeeld als u de officiële MS SQL-driver gebruikt:jdbc:sqlserver://yourserver;instanceName=yourInstance;databaseName=yourDBName;sendStringParametersAsUnicode=false;
Instructies bij het gebruik van verschillende jdbc-stuurprogramma's en meer gedetailleerde informatie over het probleem hier:http://emransharif.blogspot.fr/2011/07/performance-issues-with-jdbc-drivers.html
In mijn geval had ik meer dan 30 miljoen records in de tabel waaruit ik zocht. De duur om het verzoek te voltooien ging van meer dan 10 seconden tot ongeveer 0,01 s na het toepassen van de eigenschap.
Ik hoop dat dit iemand zal helpen!