यदि आप UPDATE users SET column = 'value' WHERE id = 1 OR id = 2 OR id = 3 ... OR id = 50000
जैसी कोई क्वेरी बनाने के बारे में सोच रहे हैं तो या WHERE id IN (1, 2, 3, ..., 50000)
तो वह शायद बहुत बड़ा होगा। यदि आप इसे सारांशित करने के लिए कुछ तर्क बना सकते हैं, तो यह क्वेरी को छोटा कर देगा और MySQL के अंत में चीजों को गति देगा। हो सकता है कि आप इसे WHERE id >= 1 AND id <= 50000
. बना सकें ।
यदि वह विकल्प नहीं है, तो आप इसे बर्स्ट में कर सकते हैं। आप शायद CSV फ़ाइल की पंक्तियों के माध्यम से लूप करने जा रहे हैं, क्वेरी को एक बड़े WHERE id = 1 OR id = 2...
के रूप में बनाएं क्वेरी और हर 100 पंक्तियों या तो (या 50 यदि वह अभी भी बहुत बड़ी है), क्वेरी चलाएँ और अगले 50 आईडी के लिए एक नई शुरुआत करें।
या आप केवल 50,000 एकल UPDATE
चला सकते हैं आपके डेटाबेस पर प्रश्न। ईमानदारी से, यदि तालिका अनुक्रमणिका का उचित उपयोग करती है, तो 50,000 प्रश्नों को चलाने में अधिकांश आधुनिक वेबसर्वर पर केवल कुछ सेकंड लगने चाहिए। यहां तक कि सबसे व्यस्त सर्वर भी इसे एक मिनट के भीतर संभालने में सक्षम होना चाहिए।
फ़ाइल को टुकड़ों में पढ़ने के लिए, आप उसके लिए PHP के मूल फ़ाइल एक्सेस फ़ंक्शंस का उपयोग कर सकते हैं:
$file = fopen('/path/to/file.csv', 'r');
// read one line at a time from the file (fgets reads up to the
// next newline character if you don't provide a number of bytes)
while (!feof($file)) {
$line = fgets($file);
// or, since it's a CSV file:
$row = fgetcsv($file);
// $row is not an array with all the CSV columns
// do stuff with the line/row
}
// set the file pointer to 60 kb into the file
fseek($file, 60*1024);
// close the file
fclose($file);
यह पूरी फाइल को मेमोरी में नहीं पढ़ेगा। सुनिश्चित नहीं है कि लारवेल के पास फाइलों से निपटने का अपना तरीका है, लेकिन मूल PHP में इसे कैसे करना है।