मेरे पास वास्तव में अभी 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) वैसे, किसी क्वेरी से परिणाम पृष्ठ का सबसे तेज़ तरीका केवल एक बार क्वेरी निष्पादित करना और एप्लिकेशन पक्ष से सभी प्रवाह को संभालना है।