gpt4 book ai didi

php - 如何优化 CodeIgniter 中的插入(插入速度更快)

转载 作者:太空宇宙 更新时间:2023-11-03 11:48:28 24 4
gpt4 key购买 nike

我想在另一个表中创建一个包含所有链接的表,但是过程太慢了,我正在用 CodeIgniter 做这个,我想知道是否有更好的方法。

这是我的代码:

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++;
}

有什么想法吗?我使用 activerecords 而不是 SQL。

提前致谢!

最佳答案

最快的机制是写出文本文件 CSV 并执行 LOAD DATA INFILE。通常它会进入首先被清除的工作表。然后该表收到插入 realTable(col1、col2 等)的调用,从 workTable 中选择 col1、col2 等。

这是最快的方法。

所以有 2 个调用。如果第二个调用是一个带有连接模式的插入,那很好。

但是循环永远是一条慢路。

使用此策略将大大优于执行循环。

CI 可以通过原始查询执行此操作。因此,任何与 ORM 的斗争都可以轻松规避。

关于php - 如何优化 CodeIgniter 中的插入(插入速度更快),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37041582/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com