अनुकूली बफरिंग एक अच्छा जवाब है। मैं कनेक्शन की जांच करने की भी सिफारिश करता हूं' SET SQL सर्वर प्रोफाइलर के माध्यम से विकल्प।
जब आप कोई ट्रेस प्रारंभ करते हैं, तो सुनिश्चित करें कि ExistingConnections चूना गया। JDBC कनेक्शन और SSMS कनेक्शन से SPID की तुलना करें। ARITHABORT एक के रूप में दिमाग में आता है कि मैंने SSMS और JDBC ड्राइवर के बीच प्रदर्शन में अंतर देखा है। माइक्रोसॉफ्ट ने यहां संक्षेप में इसका उल्लेख किया है:https://msdn.microsoft.com/en-us/library/ms190306.aspx। यहां स्टैक एक्सचेंज की जानकारी:https://dba.stackexchange.com/questions/9840/why-would-set-arithabort-on-dramatically-speed-up-a-query
Oracle पर, मैंने setFetchSize . के साथ खेलकर बड़े प्रभाव देखे हैं Statement पर विधि / PreparedStatement वस्तु। जाहिर है, SQL सर्वर ड्राइवर उस पद्धति का समर्थन नहीं करता है। हालाँकि, इसके लिए ड्राइवर में एक आंतरिक विधि है। विवरण के लिए JDBC ड्राइवर का उपयोग करके SQL सर्वर में डिफ़ॉल्ट पंक्ति प्रीफ़ेच सेट करें देखें।
साथ ही, आप अपने while (rs.next()) . में क्या कर रहे हैं? कुंडली? एक कॉलम पढ़ने के अलावा कुछ नहीं करने की कोशिश करें, जैसे rs.getInt(1) . देखते हैं क्या होता है। यदि यह उड़ जाता है, तो इसका मतलब है कि बाधा परिणाम सेट के आपके पूर्व प्रसंस्करण में है। यदि यह अभी भी धीमा है, तो समस्या ड्राइवर या डेटाबेस में होनी चाहिए।
आप निष्पादन की तुलना करने के लिए SQL सर्वर प्रोफाइलर का उपयोग कर सकते हैं क्योंकि वे जेडीबीसी के माध्यम से आते हैं और जैसे ही आप इसे एसएसएमएस के माध्यम से चलाते हैं। सीपीयू की तुलना करें, पढ़ता है, लिखता है और अवधि। यदि वे अलग हैं, तो निष्पादन योजना शायद अलग है, जो मुझे पहली बात की ओर इशारा करती है जिसका मैंने उल्लेख किया था:SET विकल्प।