2015-12-09 7 views
8

मैं और अधिक तोMySQL: मात्रा द्वारा पुनर्प्राप्त एक बड़ी चयन

70 milion पंक्तियों

साथ चयन है

मैं win2012 आर 2 पर एक बड़े csv फ़ाइल में चयनित डेटा को बचाने के लिए करना चाहते हैं

प्रश्न: बेहतर प्रदर्शन के लिए MySQL से डेटा को कैसे पुनर्प्राप्त करें?

जब मैं एक बड़े को बचाने की कोशिश का चयन क्योंकि मैं

मिला स्मृति त्रुटियों से बाहर

किसी भी मदद के लिए धन्यवाद!

उत्तर

13

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

अंत में, यह अस्थायी तालिका काम पूरा हो जाने ड्रॉप करने अच्छे फार्म है

संबंधित मुद्दे