यदि मैंने आपका कोड सही ढंग से पढ़ा है, तो आप जो चाहते हैं वह एक एकल MERGE कथन है जिसे आप डेटाबेस पर चला सकते हैं। मैं PHP नहीं जानता, इसलिए मैं आपको यह नहीं बता सकता कि इसे कैसे कहा जाना चाहिए, लेकिन मैं आपको चलाने के लिए SQL कथन दे सकता हूं:
MERGE INTO mep_tbl_output_details tgt
USING (SELECT mtm.modelid,
mtm.model_name,
mtmc.configurationid,
mtmc.date_code,
mtmc.read_row_after,
mtmc.create_from_format,
mtmc.ip_address,
mtmc.status,
mtmc.ts_code
FROM mep_tbl_model mtm
INNER JOIN mep_tbl_model_configuration mtmc ON mtm.modelid = mtmc.modelid_fk
WHERE mtm.active = 'Y'
AND mtm.location = 'PCBA') src
ON (tgt.modelid_fk = src.modelid
AND tgt.ts_code = src.ts_code
AND tgt.configurationid_fk = src.configurationid
AND tgt.runningdate = :log_date
AND tgt.shift = 'Morning'
AND tgt.quantity_status = 'OK')
WHEN NOT MATCHED THEN
INSERT (tgt.modelid_fk, tgt.running_date, tgt.quantity_status, tgt.ts_code, tgt.shift, tgt.configuration_fk)
VALUES (src.modelid, :log_date, 'OK', src.ts_code, 'Morning', src.configurationid);
यह वह जुड़ाव है जो आप अपने लूप के साथ फिर से खोज रहे थे, इसे वापस उस तालिका से जोड़ता है जिसमें आप सम्मिलित करने का प्रयास कर रहे हैं, और केवल एक पंक्ति सम्मिलित करता है यदि यह तालिका में पहले से मौजूद नहीं है।
log_date को बाइंड वेरिएबल के रूप में पास करने के बाद, आपको इसे निष्पादित करने के लिए PHP कोड लिखना होगा।
वेरिएबल को बाइंड करके, आप डेटाबेस को हार्ड पार्स को छोड़ने की अनुमति देते हैं (यानी क्वेरी को निष्पादित करने का सबसे अच्छा तरीका खोजना), जिससे समय की बचत होती है।
अधिक डेटा का चयन करने से पहले डेटा नहीं लाने और मैन्युअल रूप से लूपिंग करके और यदि आपको सम्मिलित करने की आवश्यकता है, तो आप पूरे नेटवर्क में डेटा स्विचिंग और पुलिंग/पुशिंग के बहुत सारे संदर्भ को छोड़ देते हैं। डेटाबेस को हैवी लिफ्टिंग करने दें; यह वही है जो इसे करने के लिए डिज़ाइन किया गया है!