我有一个文件有三列移动电话号码,公司名称和状态有数百万条记录。我已经从文件中读取数据并将各列中的数据存储在各自的数组中。我会使用loadInfile mysql但问题是而不是公司名称,我想存储存储在我的mysql表中的company_ids。所以基本上我想做的是用他们的company_ids替换公司名称,但问题是简单的选择语句需要花费很多时间,因为记录是数百万。请建议我一个可行的方法thankx.just为了理解我在下面给出一个代码
$company_names_arr=array('ABC','Def','Ghi',.......);
foreach($company_names_arr as $arr)
{
$this->db->select('company_id');
$this->db->from('companies_info');
$this->db->where('company_name',$arr);
$q=$this->db->get();
$res=$q->result();
$company_ids_arr[]=$res;
}
我知道上面写的代码不是一个可行的方法来实现我想要实现的目标,所以请建议我一个更好的方法谢谢
忘记逐行插入这么多数据,因为你已经发现它会非常慢。
使用load data infile
将文本文件原样加载到临时表。登台表应该在公司名称列上有一个索引。然后使用带有连接的insert ... select ...将公司ID插入到最终表中。