यह तालिका प्रश्न से सिर्फ एक चुनिंदा * है। उत्तर तालिका से चुनने के लिए यह अधिक कुशल है (कॉलम आपको चाहिए)।
सामग्री प्रदाता से पढ़ने के लिए सबसे अच्छा केस सेनारियो प्राप्त होता है जब प्रक्षेपण में केवल वे कॉलम होते हैं जिनका आप उपयोग करना चाहते हैं और आपके पास डेटा पढ़ने के लिए एक अच्छी तरह से कोडित पाश है।
यदि आप प्रक्षेपण के लिए शून्य पास करते हैं तो यह वही समय लगेगा क्योंकि सामग्री प्रदाता के सभी कॉलम दोनों कॉल पर वापस आ जाएंगे।
पहले पर यदि आप प्रक्षेपण और 2 पास आप पारित लिए KEY_ID पारित फोन {KEY_ID, key_email} 2 पास अधिक समय लगेगा क्योंकि सामग्री प्रदाता अधिक डेटा
लौटने
वास्तविक समय पर निर्भर करता है आप लूप में डेटा लूप और डेटा के साथ क्या करते हैं, आप कितनी अच्छी तरह से करते हैं। उदाहरण के लिए यदि आप प्रत्येक लूप को getColumnIndex ("ईमेल") प्राप्त करते हैं तो यह एक अनुकूलित प्रोग्राम से बहुत अधिक समय लेगा जो लूप में प्रवेश करने से पहले कॉलम इंडेक्स निर्धारित करता है।
ध्यान दें कि कोई चाल नहीं है टॉफ़र्स्ट() यह स्क्लेइट के लिए सबसे तेज़ पठन लूप है जो पहले कॉल को स्थानांतरित करने के लिए टॉन्क्स्ट() आपके लिए moveFoFirst() करता है।
if (cursor !=null) {
//get column indexes here
while (cursor.moveToNext()){ //processing here }
}
cursor.close()}
ऐसा लगता है कि तालिका में एक कॉलम के लिए पूछताछ के समय के अंतर और एक से अधिक के लिए पूछताछ के बारे में एक सवाल है। और वह सिर्फ एक डीबी सवाल करने के लिए नीचे उबाल चाहिए, विशेष रूप से, SQLite, इस मामले में, के बाद से है कि एंड्रॉयड में प्रारूप, डिफ़ॉल्ट रूप से है। या क्या मैं कुछ न कुछ भूल रहा हूं ? –
1) "दक्षता" कोई परिभाषित अर्थ नहीं है। आप जो कुछ भी चाहते हैं उसका जवाब दे सकते हैं। 2 ए) डिवाइस पर निर्भर करता है और यह कितना तेज़ है। 2 बी) डेटाबेस स्कीमा को जानने के बिना जानना असंभव है। और 'ContentProvider' के मामले में भी कम है क्योंकि उनको डेटाबेस नहीं होना चाहिए। उन्हें एक भरोसेमंद webservice द्वारा समर्थित किया जा सकता है। – zapl