कहना है कि मैं कुछ SELECT
बयान है लगता है मैंने जो दिखाया है उससे कहीं अधिक जटिल (संभवतः एक दर्जन कॉलम पर काम कर रहा है)।ढूँढें पंक्ति संख्या, तो अपने पड़ोसियों
मैं यूआई में उन्हें प्रदर्शित करने के लिए पंक्तियों का केवल एक छोटा सबसेट (पंक्तियों 1..11 कहता हूं) पुनर्प्राप्त करता हूं। अब, मैं निम्नलिखित समस्याओं को हल करना चाहता हूं:
- किसी दिए गए
id
के साथ एक पंक्ति की संख्या खोजें। - दिए गए 5 आइटम पहले और 5 आइटम आइटम को दिए गए
id
के साथ प्रदर्शित करें।
समस्या 2 हल करने के लिए एक बार मैं इस समस्या 1 समाधान कर लिया है, जैसा कि मैंने तो अगर मुझे पता है कि आइटम मैं खोज रहा था क्रमबद्ध परिणाम सेट में पंक्ति संख्या 1000
(यह है कुछ इस तरह उपयोग कर सकते हैं आसान है Firebird एसक्यूएल बोली):
SELECT id, name FROM people
ORDER BY name ASC
ROWS 995 TO 1005;
मैं भी है कि मैं पंक्तियों जो एक मैं देख रहा हूँ से पहले आने के सभी गणना के द्वारा एक पंक्ति के rank पा सकते हैं पता है, लेकिन इस के साथ बहुत लंबे WHERE
खंड को जन्म दे सकता इस स्थिति में OR
और AND
के टन। और मुझे इसे बार-बार करना है। मेरे परीक्षण डेटा के साथ, यह ठीक से अनुक्रमित कॉलम का उपयोग करते समय भी सैकड़ों मिलीसेकंड लेता है, जो कि बहुत धीमा है।
क्या कुछ SQL: 2003 सुविधाओं (जैसे row_number
फ़ायरबर्ड 3.0 में समर्थित) का उपयोग कर इसे प्राप्त करने के कुछ साधन हैं? मैं किसी भी तरह से एक एसक्यूएल गुरु नहीं हूं और मुझे यहां कुछ पॉइंटर्स चाहिए। क्या मैं एक कैश किए गए दृश्य को बना सकता हूं जहां परिणाम रैंक/घने रैंक/पंक्ति अनुक्रमणिका शामिल होगा?
यूआई प्रकार के बारे में जानकारी के बिना जवाब देने में बहुत मुश्किल है। वेब? डेस्कटॉप? कमांड लाइन? वॉयस यूआई ;-) – rstrelba
मैं डेस्कटॉप एप्लिकेशन में व्यक्तियों की एक सूची प्रदर्शित कर रहा हूं; चूंकि संग्रह बहुत बड़ा है, इसलिए मैं केवल उन लोगों के लिए पंक्तियां लाता हूं जो सूची के व्यूपोर्ट में फिट होते हैं। उपयोगकर्ता के पास स्क्रॉल बार होता है जो उसे सूची में किसी भी बिंदु पर जाने की अनुमति देता है, और इसे अपनी सामग्री को रीफ्रेश कर देता है जैसे कि यह वास्तव में लाखों पंक्तियों से भरा हुआ हो। –
व्यूपोर्ट के फ़िल्टर में कितने अतिरिक्त पैरामीटर? – rstrelba