ORDER BY परिणाम पंक्तींना क्रमवारी देते; LIMIT (OFFSET सह) किती पंक्ती परत केल्या जातात हे प्रतिबंधित करते. एकत्रितपणे ते क्रमवारीकरण आणि पेजिनेशन हाताळतात — क्रमवारीबद्ध, पेज केलेले डेटा प्रदर्शित करण्यासाठी आवश्यक.
ORDER BY — क्रमवारीकरण
SELECT name, age FROM users ORDER BY age; -- ascending (default)
SELECT name, age FROM users ORDER BY age DESC; -- descending
SELECT * FROM users ORDER BY country, name; -- by country, then name (tie-break)
SELECT * FROM users ORDER BY created_at DESC NULLS LAST; -- control NULL placement
ORDER BY एक किंवा अधिक स्तंभांद्वारे क्रमवारी देते, आरोही (डिफॉल्ट) किंवा DESC. अनेक स्तंभ टाय-ब्रेकिंग प्रदान करतात (पहिल्यानुसार क्रमवारी, नंतर समान मूल्यांसाठी दूसरा).
LIMIT आणि OFFSET — प्रतिबंधित करणे आणि पेजिंग
SELECT * FROM users ORDER BY name LIMIT 10; -- the first 10 rows
SELECT * FROM users ORDER BY name LIMIT 10 OFFSET 20; -- skip 20, take 10 (page 3)
-- (syntax varies: MySQL/Postgres use LIMIT/OFFSET; SQL Server uses TOP / OFFSET-FETCH)
LIMIT n सर्वाधिक n पंक्ती परत करते; OFFSET m पहिल्या m ला वगळते. एकत्रितपणे ते ऑफसेट पेजिनेशन लागू करतात (पृष्ठ N = LIMIT pageSize OFFSET (N-1)*pageSize).
पेजिंग करताना नेहमी ORDER BY वापरा
-- ❌ LIMIT without ORDER BY → row order is UNDEFINED (inconsistent pages!)
SELECT * FROM users LIMIT 10;
-- ✅ always ORDER BY a stable column for consistent pagination
SELECT * FROM users ORDER BY id LIMIT 10;
महत्वपूर्ण: ORDER BY शिवाय, डेटाबेस कोणत्याही क्रमांत पंक्ती परत करू शकतो, त्यामुळे पृष्ठ ओव्हरलॅप होऊ शकतात किंवा पंक्ती वगळू शकतात. पेजिंग करताना नेहमी स्थिर स्तंभाद्वारे क्रमवारी करा.
OFFSET पेजिनेशन खोल पृष्ठांवर मंद होते
⚠️ LIMIT 10 OFFSET 1000000 — the DB must SKIP a million rows first (slow on deep pages).
For large datasets, KEYSET (cursor) pagination is far more efficient:
WHERE id > :last_seen_id ORDER BY id LIMIT 10 -- uses an index, no skipping
हे का महत्वाचे आहे
ORDER BY आणि LIMIT डेटा उपयोगी, व्यवस्थित मार्गांनी प्रदर्शित करण्यासाठी मूलभूत आहेत — परिणाम क्रमवारीचे करणे आणि संपूर्ण टेबल्सऐवजी पृष्ठ परत करणे ही जवळजवळ सार्वत्रिक आवश्यकता आहे (अनुप्रयोगातील कोणतीही यादी, तक्ता किंवा फीड), त्यामुळे त्यांची समज आवश्यक दैनंदिन ज्ञान आहे. ORDER BY (एक किंवा अधिक स्तंभांद्वारे क्रमवारीचे करणे, टाई-ब्रेकिंगसह) डेटा अर्थपूर्ण क्रमांत सादर करण्यासाठी आवश्यक आहे, आणि LIMIT/OFFSET पेजिनेशन लागू करतात (डेटाचे व्यवस्थापनयोग्य पृष्ठ परत करणे) — दोन्ही अनुप्रयोगांमध्ये व्यापक आहेत.
दोन व्यावहारिक बिंदू विशेषतः महत्वाचे आहेत: पेजिंग करताना नेहमी ORDER BY वापरा (ORDER BY शिवाय, पंक्तीचा क्रम अपरिभाषित आहे, असंगत पृष्ठांना कारणीभूत आहेत जे ओव्हरलॅप होतात किंवा पंक्ती वगळतात — वास्तविक, सामान्य बग), आणि हे समजून घेणे कि OFFSET पेजिनेशन खोल पृष्ठांवर ख्रस लागते (डेटाबेसने सर्व पूर्ववर्ती पंक्ती वगळल्या पाहिजेत, मोठ्या ऑफसेटसाठी मंद होत आहे), त्यामुळे keyset/cursor पेजिनेशन (WHERE id > last_seen) मोठ्या डेटासेटसाठी खूप अधिक कार्यक्षम आहे — मोठ्या डेटासाठी मूल्यवान ज्ञान. क्रमवारीकरण आणि पेजिनेशन कमी-अधिक कोणत्याही डेटा प्रदर्शनासाठी आवश्यक आहेत, आणि सुसंगतता आवश्यकता (पेजिनेशनसाठी ORDER BY) आणि कार्यक्षमता विचार (मोठ्या डेटासाठी OFFSET विरुद्ध keyset) थेट शुद्धता आणि गती प्रभावित करतात, ORDER BY आणि LIMIT मास्टर करणे — क्रमवारीकरण, ऑफसेट पेजिनेशन, स्थिर-क्रमांचे आवश्यकता, आणि स्केलसाठी keyset पर्याय — डेटा प्रभावीपणे सादर करणारे अनुप्रयोग तयार करण्यासाठी मूल, वारंवार-लागू ज्ञान आहे.
