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

PHP Oracle क्वेरी लूप स्लो के अंदर स्टेटमेंट का चयन करें

यदि मैंने आपका कोड सही ढंग से पढ़ा है, तो आप जो चाहते हैं वह एक एकल 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 कोड लिखना होगा।

वेरिएबल को बाइंड करके, आप डेटाबेस को हार्ड पार्स को छोड़ने की अनुमति देते हैं (यानी क्वेरी को निष्पादित करने का सबसे अच्छा तरीका खोजना), जिससे समय की बचत होती है।

अधिक डेटा का चयन करने से पहले डेटा नहीं लाने और मैन्युअल रूप से लूपिंग करके और यदि आपको सम्मिलित करने की आवश्यकता है, तो आप पूरे नेटवर्क में डेटा स्विचिंग और पुलिंग/पुशिंग के बहुत सारे संदर्भ को छोड़ देते हैं। डेटाबेस को हैवी लिफ्टिंग करने दें; यह वही है जो इसे करने के लिए डिज़ाइन किया गया है!




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. ओरेकल ट्रिगर में डालें ... (चुनें * ...)

  2. ओआरए 00936 गुम अभिव्यक्ति त्रुटि को कैसे हल करें?

  3. ऑरैकल टेबल या दृश्य अंदर संग्रहीत प्रक्रिया से मौजूद नहीं है

  4. Oracle डेटाबेस में RAISE_APPLICATION_ERROR विधि का उपयोग करके उपयोगकर्ता-परिभाषित अपवाद घोषित करें

  5. over() और विभाजन को समझने की कोशिश कर रहा है