2011-12-26 13 views
8

$this->db->insert_batch(); 1 टेबल कनेक्शन के साथ डालें या क्या यह प्रत्येक पंक्ति को अलग-अलग कनेक्शन खोलने के ऊपरी हिस्से में डाल देता है?कोडिग्निटर बैच सम्मिलन प्रदर्शन

+0

डाटाबेस कनेक्शन हमेशा बैच या नहीं होना चाहिए। – Usman

उत्तर

11

कोड आग लगनेवाला insert_batch के प्रलेखन से कर बातें

$data = array(
    array(
     'title' => 'My title' , 
     'name' => 'My Name' , 
     'date' => 'My date' 
    ), 
    array(
     'title' => 'Another title' , 
     'name' => 'Another Name' , 
     'date' => 'Another date' 
    ) 
); 

$this->db->insert_batch('mytable', $data); 

// Produces: INSERT INTO mytable (title, name, date) VALUES ('My title', 'My name', 'My date'), ('Another title', 'Another name', 'Another date') 

इस तरह तो यह तेजी से अलग आवेषण कर तो सामान्य रूप से इस तरह से सभी मूल्यों के साथ केवल एक क्वेरी, उत्पादन होगा।

6

अपने प्रश्न का उत्तर देने के लिए: यह एक कनेक्शन का उपयोग करता है।

1

वास्तव में दस्तावेज़ पर आधारित @RageZ उत्तर हमेशा सही नहीं होता है। क्योंकि यह पूरी तरह से उन वस्तुओं की संख्या पर आधारित है जिन्हें आप सम्मिलित करना चाहते हैं। कोडिनेटर insert_batch() कोड को देखते समय, आप देख सकते हैं कि वे 100 आइटमों में बैच आवेषण स्लाइस करते हैं।

// Batch this baby (Around line number 1077 in codeigniter 2.x) 
for ($i = 0, $total = count($this->ar_set); $i < $total; $i = $i + 100) 
{ 
    $sql = $this->_insert_batch($this->_protect_identifiers($table, TRUE, NULL, FALSE), $this->ar_keys, array_slice($this->ar_set, $i, 100)); 

    //echo $sql; 

    $this->query($sql); 
} 

इसका मतलब है कि अपने मूल्यों 100s आवेषण के लिए टुकड़ा हो जाएगा और यदि आप echo $sql हिस्सा uncomment आप देख सकते हैं जब आप डालने 101 मदों के लिए बैच का उपयोग की तरह लग रही है। तो आपकी कनेक्शन वरीयताओं के आधार पर डीबी में डालने के लिए एक से अधिक कनेक्शन की आवश्यकता हो सकती है।

+0

@ इस प्रश्न से पूछा गया था कि रेजज़ का जवाब सच हो सकता है, मुझे लगता है कि मैं सीआई 1.xx –

+0

@amiawizard का उपयोग कर रहा था, यह सही हो सकता है और यह सुनिश्चित करने का एकमात्र तरीका कोड को देखना है। जैसा कि मुझे पता है कि उन्होंने इस भाग के दस्तावेज़ों को 1.x से नहीं बदला है, लेकिन यह संभव है कि कोड 1.x से 2.x – sobhan

+0

@amiawizard मैंने 1.7.1 और 1.7.3 की जांच की है और इसमें कोई insert_batch फ़ंक्शन नहीं है उन्हें और ऐसा लगता है कि यह फ़ंक्शन संस्करण 2.x में प्रस्तुत किया गया है https://github.com/EllisLab/CodeIgniter/blob/develop/user_guide_src/source/changelog.rst – sobhan

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