हो सकता है मेरे पास एक SQL सर्वर तालिका AccountAction
है जो denormalised है। यह Account
और Action
तालिकाओं का एक चौड़ा संस्करण है, जो मुझे उम्मीद है कि लाखों पंक्तियों पर रिपोर्टिंग के लिए बहुत तेज़ होना चाहिए। एक Account
कई Actions
हो सकता है, तो तालिका के समान दिखता है:एसक्यूएल डीबी से खातों की एक्स संख्या प्राप्त करने के लिए, जो पंक्तियों की चर संख्या
Account Action
account1 action1
account1 action2
account1 action10
account2 action5
हालांकि मैं जानकारी एक साधारण संग्रहीत प्रक्रिया में किसी प्रतिबंधित सबसेट के लिए वापस हो रही है कुछ समस्या हो रही है।
select Account, Action
from AccountAction
where ???
जो मैं ढूंढ रहा हूं वह है कि वह अपने सभी कार्यों के साथ पहले एक्स खाते प्राप्त करें। तो यह पंक्तियों की एक गतिशील संख्या होगी। तो यदि मैं 1 में पारित हुआ तो उपर्युक्त उदाहरण तालिका का उपयोग करके, मुझे 3 पंक्तियां मिलेंगी (यानी मुझे पहले खाते के लिए सभी पंक्तियां दें)।
(मुझे कोई आपत्ति नहीं है कि खाते का नाम प्रत्येक पंक्ति में होगा - इसे कहीं और पिवट किए है)
मैं पंक्तियों को प्रतिबंधित करने के एक ROWNUM या इसी तरह का उपयोग करने की आवश्यकता है? मुझे यकीन है कि यह अब तक की तुलना में यह एक आसान मुद्दा होना चाहिए।
संपादित
टॉप का उपयोग कर काम नहीं करेगा, उदाहरण मैं चाहता होगी अगर मैं ने कहा 'मुझे एक (प्रथम) खाते दे' 3 पंक्तियों लौटे में जवाब। लेकिन मुझे कैसे पता चलेगा कि 3 होगा? इसकी गतिशील इसके अलावा वे अनुक्रमिक नहीं हो सकते हैं, तो क्या होगा यदि खाते 1 का एक्शन 99 परिणाम में 55 मिलियन स्थान पर था।
यह अच्छा लगता है, हालांकि प्रदर्शन के बारे में क्या उदाहरण के लिए 100 मीटर पंक्तियां? इसे पहले हर पंक्ति पर रैंक करना होगा? – finoutlook
@finoutlook - यह निर्भर करता है। * वास्तव में * आवश्यक है कि 'खाता' ऑर्डर में डेटा होना चाहिए। एक बार आदेश देने के बाद, ऑप्टिमाइज़र सिर्फ उस के 'एनएचएच' उदाहरण की तलाश कर सकता है। तो, क्या आपके पास पहले से ही 'खाता' के साथ पहले से ही एक इंडेक्स है? यदि ऐसा है, तो डेटा पहले से ही आदेश दिया गया है और आप केवल रिकॉर्ड्स की न्यूनतम संख्या को संसाधित कर रहे हैं। यदि नहीं, तो एक जोड़ें;) – MatBailie
कूल, मैंने उन्हें पूर्व-आदेश देने का विचार नहीं किया था। मैं डी-सामान्यीकृत तालिका में सिंक के हिस्से के रूप में ऐसा कर सकता था। – finoutlook