Ich möchte eine Tabelle mit allen Links in einem anderen erstellen, aber der Prozess ist zu langsam, ich mache dies mit CodeIgniter, und ich möchte wissen, ob es ein besserer Weg, es zu tun.Wie optimiere ich Einfügen in CodeIgniter (Einfügen schneller)
Dies ist mein Code:
foreach($results as $value) {
$ci->db->select('id');
$ci->db->where('url', $value->Url);
$link = $ci->db->get('links')->row();
if(@!$link) {
$ci->db->insert('links', array(
'title' => $value->Title,
'url' => $value->Url,
'description' => $value->Description,
'is_featured' => 0,
'published_date' => date('Y-m-d h:i:s')
));
$link_id = $ci->db->insert_id();
} else {
$link_id = $link->id;
}
$ci->db->where('link_id', $link_id);
$ci->db->where('term_id', $term_id);
$term_links = $ci->db->get('term_links')->row();
if(!$term_links) {
$ci->db->insert('term_links', array(
'link_id'=>$link_id,
'term_id'=>$term_id,
'order_link'=>$order,
'duplicates'=>0
));
} else {
$ci->db->where('id', $term_links->id);
$ci->db->update('term_links', array('duplicates'=>$term_links->duplicates+=1));
}
$order++;
}
Jede Idee? Ich benutze activerecords statt SQL.
Vielen Dank im Voraus!
Vielen Dank! Ich habe gesehen, wie man die Funktion benutzt, und ich habe nur eine Frage, diese Funktion könnte die eingefügten IDs zurückgeben? weil ich die insert_id() -Funktion verwende, um die Zeilen zu erhalten, die ich eingefügt habe. Danke noch einmal! – Alan
Mein Verständnis ist nein. Das liegt daran, dass das zugrunde liegende mysql last_insert_id() dies nicht unterstützt. http://dev.mysql.com/doc/refman/5.6/en/information-functions.html#function_last-inser-id-id – e4c5
Wenn Batch für Sie nicht funktioniert, mal sehen, was die Alternativen sind, aber Sie müssen Aktualisieren Sie Ihre Frage, indem Sie genauer angeben, was genau Sie tun möchten und wie Ihre Tabellen aussehen – e4c5