आप LIMIT
सुविधा का उपयोग करने का प्रयास कर सकते हैं। यदि आप ऐसा करते हैं:
SELECT * FROM MyTable ORDER BY whatever LIMIT 0,1000
आपको पहली 1,000 पंक्तियां मिलेंगी। पहले LIMIT
मान (0) परिणाम सेट में प्रारंभिक पंक्ति को परिभाषित करता है। यह शून्य अनुक्रमित है, इसलिए 0 का मतलब है "पहली पंक्ति"। दूसरा LIMIT
मान पुनर्प्राप्त करने के लिए पंक्तियों की अधिकतम संख्या है। 1,000 के अगले कुछ सेट प्राप्त करने के लिए, यह करें:
SELECT * FROM MyTable ORDER BY whatever LIMIT 1000,1000 -- rows 1,001 - 2,000
SELECT * FROM MyTable ORDER BY whatever LIMIT 2000,1000 -- rows 2,001 - 3,000
और इसी तरह। जब SELECT
कोई पंक्ति नहीं देता है, तो आप कर चुके हैं।
यह अपने आप पर पर्याप्त नहीं है, क्योंकि एक समय में आपकी 1K पंक्तियों को संसाधित करते समय तालिका में किए गए कोई भी बदलाव आदेश को फेंक देंगे। कुछ ही समय में परिणाम फ्रीज करने के लिए, एक अस्थायी तालिका में परिणाम की क्वेरी से शुरू:
CREATE TEMPORARY TABLE MyChunkedResult AS (
SELECT *
FROM MyTable
ORDER BY whatever
);
साइड नोट: यह एक अच्छा विचार है सुनिश्चित करने के लिए अस्थायी तालिका में पहले से मौजूद नहीं है:
DROP TEMPORARY TABLE IF EXISTS MyChunkedResult;
किसी भी दर पर, एक बार अस्थायी तालिका जगह में है, वहाँ से पंक्ति हिस्सा खींच:
SELECT * FROM MyChunkedResult LIMIT 0, 1000;
SELECT * FROM MyChunkedResult LIMIT 1000,1000;
SELECT * FROM MyChunkedResult LIMIT 2000,1000;
.. and so on.
मैं तर्क है कि प्रत्येक टुकड़ा के बाद सीमा मूल्य की गणना करेगा बनाने के लिए आप के लिए यह छोड़ देंगे और परिणामों के अंत की जांच करें। मैं 1000 रिकॉर्ड से ज्यादा बड़े हिस्से की भी सिफारिश करता हूं; यह सिर्फ एक संख्या है जिसे मैंने हवा से बाहर निकाला है।
DROP TEMPORARY TABLE MyChunkedResult;
:
अंत में, यह अस्थायी तालिका काम पूरा हो जाने ड्रॉप करने अच्छे फार्म है