Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

MySQL :विखंडू द्वारा एक बड़े चयन को पुनः प्राप्त करें

आप 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;


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. DEFAULT क्लॉज में CURRENT_TIMESTAMP के साथ केवल एक TIMESTAMP कॉलम क्यों हो सकता है?

  2. MySQL में स्थानिक सूचकांक - त्रुटि - आपके द्वारा GEOMETRY फ़ील्ड में भेजे गए डेटा से ज्यामिति वस्तु प्राप्त नहीं कर सकता

  3. PHP 5.3 . में अपग्रेड करने के बाद MySQL डेटाबेस परिणाम प्रदर्शित करते समय गलत वर्ण एन्कोडिंग का समाधान करना

  4. माइग्रेशन लार्वा 5.1 . में ऑटो इंक्रीमेंट फ़ील्ड को 1000 से प्रारंभ करें सेट करें

  5. Json एक संपूर्ण mysql परिणाम सेट को एन्कोड करता है