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

Oracle पृष्ठ पर अंक लगाना रणनीति

आपने यह नहीं बताया कि क्या आप हर बार पेजिनेशन करने पर "X" और "Y" को एडजस्ट करने की योजना बना रहे हैं। यदि आप नहीं करते हैं तो दृष्टिकोण शायद केवल तभी मान्य है जब आपको उच्च विश्वास हो कि डेटा काफी स्थिर है।

निम्नलिखित उदाहरण पर विचार करें:

मेरी तालिका टी में क्रमशः आईडी =1 से 100 के साथ "आज" के लिए 100 पंक्तियों की तारीख टाइमस्टैम्प है, और मुझे अपने पहले पृष्ठ के लिए अंतिम 20 पंक्तियां चाहिए। तो मैं यह करता हूं:

select * 
from T 
where date_col = trunc(sysdate) 
order by id desc
fetch first 20 rows only

मैं अपनी क्वेरी चलाता हूं और आईडी =100 से 80 तक नीचे आता हूं। अब तक बहुत अच्छा है - यह सब उपयोगकर्ता के पेज पर है, और डेटा को पढ़ने में उन्हें 30 सेकंड का समय लगता है। उस समय के दौरान, तालिका में एक और 17 रिकॉर्ड जोड़े गए हैं (ID=101 से 117)।

अब उपयोगकर्ता "अगला पृष्ठ" दबाता है

अब मैं अगला सेट प्राप्त करने के लिए फिर से क्वेरी चलाता हूं

select * 
from T 
where date_col = trunc(sysdate) 
order by id desc
offset 20 fetch next 20 rows only

वे पंक्तियों को 80 से 60 तक नहीं देखेंगे, जो उनकी अपेक्षा होगी, क्योंकि डेटा बदल गया है। वे करेंगे

a) पंक्तियाँ ID=117 से 97 तक प्राप्त करें, और OFFSETb के कारण उन्हें छोड़ दें) फिर स्क्रीन पर प्रदर्शित होने के लिए पंक्तियाँ ID=97 से 77 तक प्राप्त करें

वे भ्रमित होंगे क्योंकि वे पंक्तियों के समान सेट को देख रहे हैं जैसा कि उन्होंने पहले पृष्ठ पर किया था।

बदलते डेटा के खिलाफ पेजिनेशन के लिए, आप आम तौर पर ऑफसेट क्लॉज से दूर रहना चाहते हैं, और अपने एप्लिकेशन का उपयोग यह नोट करने के लिए करते हैं कि आप कहां पहुंचे, यानी

पेज 1

select * 
from T 
where date_col = trunc(sysdate) 
order by id desc
fetch first 20 rows only

मैं आईडी =100 से 80 तक नीचे लाता हूं...मैं ध्यान देता हूं 80 में से। मेरी अगली क्वेरी तब होगी

select * 
from T 
where date_col = trunc(sysdate) 
AND ID<80
order by id desc
fetch first 20 rows only

और मेरी अगली क्वेरी होगी

select * 
from T 
where date_col = trunc(sysdate) 
AND ID<60
order by id desc
fetch first 20 rows only

और आगे।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Oracle तालिका को गतिशील रूप से पिवट करना

  2. SUM (TO_NUMBER (varchar2 फ़ील्ड)) नहीं कर सकता:ORA 01722 [ORACLE]

  3. क्रॉन अभिव्यक्ति को दिनांक/समय प्रारूप में कनवर्ट करने के लिए SQL क्वेरी

  4. Oracle SQL डेवलपर का उपयोग करके एक इकाई-संबंध (ER) आरेख कैसे उत्पन्न करें

  5. Oracle/SQL में समय श्रृंखला डेटा का पूर्वानुमान