Saturday 15 May 2010

sql - Trouble with rownum in query -


मैं इस विवाद को राउनुम के साथ रखता हूं:

  rownum as n, s। * से चुनें Vzwnet.site_insts जहां n के बीच 2 और 10 - & gt; डोनस काम नहीं करता है   

मुझे इसे इस रूप में रखना होगा:

  चुनें * से (चयन करें rownum n, t। * Table t से) जहां n के बीच 2 और 10   

इससे बहुत धीमा हो जाएगा ऐसा क्यों है?

आपको ऐसा क्यों लगता है कि यह इसे धीमा कर देगा? ओरेकल अनिवार्य रूप से उपकुंजीकरणों को इन्स्तांत नहीं करता है।

आपको दो कारण बताएं कि आपको यह सबक्यूरी के साथ क्यों लिखना है पहला यह है कि आप चुनें में से खंड में परिभाषित चर का उपयोग नहीं कर सकते हैं ऐसा करने के लिए, आपको सबक्विरी की आवश्यकता है। दूसरा

दूसरा यह है कि आप जहां 2 और 10 के बीच rownum नहीं कह सकते। rownum का मान सेट होता है जब डेटा को select से वापस किया जाता है। यदि कोई पहली पंक्ति वापस नहीं हुई है, तो दूसरी कभी नहीं दिखाई देगी।

यदि आप प्रदर्शन के बारे में चिंतित हैं, तो आप यह कर सकते हैं:

  चुनें * से (चयन करें rownum n , टी। * से तालिका टी जहां rownum & lt; = 10) जहां n के बीच 2 और 10   

संपादित करें:

बिना rownum का उपयोग एक आदेश एक पंक्तियों के मनमाने ढंग से सेट करता है, जो एक निष्पादन से अगले तक भिन्न हो सकता है यह एक "यादृच्छिक" सेट (जो करना बहुत मुश्किल है) वापस नहीं करता है यह तालिका में पहली पंक्तियां डाली जा सकती है, लेकिन इसकी गारंटी नहीं है।

मैं इस रूप में समाधान छोड़ रहा हूं, क्योंकि प्रश्न "पंक्तियां नहीं लौटा रहा" था, जो पंक्तियों को नहीं लौटाया गया था । rownum और lt; = 9

No comments:

Post a Comment