Oracle
 sql >> डेटाबेस >  >> RDS >> Oracle

ओरेकल तेज पेजिंग क्वेरी

मेरे पास वास्तव में अभी Oracle की उपलब्धता नहीं है लेकिन पेजिंग के लिए सबसे अच्छी SQL क्वेरी निश्चित रूप से निम्नलिखित है

select *
from (
        select rownum as rn, a.*
        from (
                select *
                from my_table
                order by ....a_unique_criteria...
            ) a
    )
where rownum <= :size
    and rn >  (:page-1)*:size

http://www.oracle.com/technetwork/issue-archive/2006/06-sep/o56asktom-086197.html

एकसमान पेजिंग प्राप्त करने के लिए आपको एक अद्वितीय मानदंड का उपयोग करके पंक्तियों को क्रमित करना चाहिए , ऐसा करने से पृष्ठ X के लिए उस पंक्ति को लोड करने से बचा जा सकेगा जिसे आपने पहले ही पृष्ठ Y ( !=X ) के लिए लोड किया है।

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

1) एक अद्वितीय मानदंड का उपयोग करके पंक्तियों को ऑर्डर करने का अर्थ है डेटा को इस तरह से ऑर्डर करना कि प्रत्येक पंक्ति क्वेरी के प्रत्येक निष्पादन पर समान स्थिति बनाए रखे

2) ORDER BY क्लॉज पर उपयोग किए गए सभी भावों के साथ एक इंडेक्स तेजी से परिणाम प्राप्त करने में मदद करेगा, खासकर पहले पृष्ठों के लिए। उस अनुक्रमणिका के साथ ऑप्टिमाइज़र द्वारा चुनी गई निष्पादन योजना को पंक्तियों को क्रमबद्ध करने की आवश्यकता नहीं है क्योंकि यह अनुक्रमणिका को उसके प्राकृतिक क्रम से स्क्रॉल करते हुए पंक्तियों को वापस कर देगा।

3) वैसे, किसी क्वेरी से परिणाम पृष्ठ का सबसे तेज़ तरीका केवल एक बार क्वेरी निष्पादित करना और एप्लिकेशन पक्ष से सभी प्रवाह को संभालना है।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. ओपन वर्ल्ड 2013 से वापस

  2. जावा प्रोग्राम में जावा संग्रहीत कार्यविधि कॉलिंग

  3. डीबीएमएस संदर्भ में यह वास्तव में एक बीएलओबी क्या है

  4. Oracle- स्प्लिट स्ट्रिंग कॉमा सीमांकित (स्ट्रिंग में रिक्त स्थान और लगातार कॉमा होते हैं)

  5. ओरेकल में संग्रहित प्रक्रिया से परिणामसेट कैसे लौटाएं?