आप 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.
मैं तर्क बनाने के लिए इसे आपके पास छोड़ दूंगा जो प्रत्येक खंड के बाद सीमा मान की गणना करेगा और परिणामों के अंत की जांच करेगा। मैं 1,000 रिकॉर्ड की तुलना में बहुत बड़े हिस्से की भी सिफारिश करता हूं; यह सिर्फ एक संख्या है जिसे मैंने हवा से बाहर निकाला है।
अंत में, जब आप काम पूरा कर लें तो अस्थायी तालिका को छोड़ना एक अच्छा तरीका है:
DROP TEMPORARY TABLE MyChunkedResult;