मैं बड़ी संख्या में आईडी (पूर्णांक) पुनर्प्राप्त करने के लिए एक प्रश्न कर रहा हूं। परिणामसेट के माध्यम से लाखों बार फिर से शुरू करने और एक-एक-एक को एक ऐरेलिस्ट में कॉपी करने के बजाय, क्या सब कुछ आसानी से एक ArrayList के रूप में पुनर्प्राप्त करने का कोई तरीका है?मैं एक जेडीबीसी परिणामसेट को एक ऐरेलिस्ट के रूप में कैसे प्राप्त कर सकता हूं?
मैं समझता हूं कि परिणामसेट को फिर से चालू किया जाना चाहिए क्योंकि अंतर्निहित कार्यान्वयन कैशिंग सामान हो सकता है, लेकिन मेरी स्थिति में मुझे बस सभी आईडी की आवश्यकता है। मुझे पता है कि मैं FetchSize को बड़ी संख्या में सेट कर सकता हूं, लेकिन फिर भी मुझे आईडी को एक-एक करके पुनर्प्राप्त करना होगा।
स्पष्टीकरण: कारण मैं इसे करना चाहता हूं प्रदर्शन है। प्रोफाइलिंग मुझे दिखाती है कि ResultSet.next(), ResultSet.getInt() और ArrayList.add() लाखों बार करने में काफी समय लगता है। मुझे लगता है कि डेटाबेस (मैं जावा में लिखे गए एच 2 का उपयोग कर रहा हूं) शायद स्मृति में कहीं भी सरणी या सूची है, इसलिए मैं परिणामसेट इटरेटिंग इंटरफ़ेस के बजाय सीधे मुझे कॉपी करने का एक तरीका ढूंढ रहा हूं ।
शायद लाखों इंटीग्रियों से निपटने में काफी समय लगता है। क्या आप इसके बजाय एक int [] या आदिम सूची चाहते हैं? संभावित रूप से अपडेट और सामान्य tableness की वजह से एक int/सूची के रूप में सीधे लागू नहीं किया गया है। –
int [] या सूची दोनों ठीक हैं। मैं मूल रूप से डेटाबेस से कहने का एक तरीका ढूंढ रहा हूं: कैशिंग/आलसी लोडिंग/आदि के बारे में भूल जाओ, बस मुझे जितनी जल्दी हो सके डेटा दें :) – Deckard
एक प्रोफ़ाइल है और देखें कि प्रदर्शन समस्या कहां है। (ओरेकल को अपने परिणामसेट, आईआईआरसी पर कॉलम सरणी विधियां मिलती हैं। यह नहीं कि एच 2 के लिए महत्वपूर्ण है।) –