पहला शतक
SELECT * FROM <table_name> ORDER BY id ASC LIMIT 0, 100
अगले सौ
SELECT * FROM <table_name> ORDER BY id ASC LIMIT 100, 100
आप ऑर्डर देने के बारे में बहुत चौकस हैं
व्याख्या की गई सीमा विवरण: LIMIT
कथन WHERE
नहीं है खंड। यह id
. द्वारा चयन नहीं करता है न ही वास्तव में किसी मानदंड से, (वहां WHERE
क्लॉज ऐसा करता है) इसके बजाय LIMIT
क्लॉज केवल यह सुनिश्चित करता है कि आपको block
. का एक टुकड़ा वापस कर दिया गया है उन परिणामों का जो "सब कुछ" का सबसेट हैं। इसलिए order by
का उल्लेख करना क्यों महत्वपूर्ण है? हर बार, ताकि प्रत्येक बाद की कॉल आपको क्रम में डेटा ब्लॉक का सही टुकड़ा देगी, और आप उनके माध्यम से 'अगला', 'अगला', 'अगला' कर सकते हैं
ईजी:अव्यवस्थित तालिका के लिए this_table
:
+-------+-------------+
| id | value |
+-------+-------------+
| 1 | bob |
| 12 | fish |
| 112 | pink |
| 2 | cat |
| 8 | dog |
| 56 | blue |
| 88 | grey |
| 87 | red |
+-------+-------------+
चयन नीचे के रूप में वापसी:
SELECT * FROM <this_table> ORDER BY id ASC LIMIT 0,5
+-------+-------------+
| id | value |
+-------+-------------+
| 1 | bob |
| 2 | cat |
| 8 | dog |
| 12 | fish |
| 56 | blue |
+-------+-------------+
और
SELECT * FROM <this_table> ORDER BY id ASC LIMIT 5,5
+-------+-------------+
| id | value |
+-------+-------------+
| 87 | red |
| 88 | grey |
| 112 | pink |
+-------+-------------+
9 और 10 पंक्तियों की कमी पर ध्यान दें, यह जानबूझकर किया गया है और MySQL को इरादे के अनुसार काम करता हुआ दिखाता है
संयोग से आपको id
. पर एक इंडेक्स जोड़ने पर भी विचार करना चाहिए यह इन चयनकर्ताओं की गति को व्यापक रूप से बढ़ा देगा
ALTER TABLE <table_name> ADD INDEX `id` (`id`)