mysql插入批处理与插入循环(codeigniter)

时间:2014-02-05 03:08:51

标签: php mysql sql codeigniter

请我开明,这是更快/更好的方法或CI batch insert和循环插入之间的相同。

$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'); */


循环插入(php):

 for( $i = 0; $ < count($data); $i++ )
 {
    INSERT INTO mytable (title, name, date) 
    VALUES ($data[$i]['title'], $data[$i]['name'], $data[$i]['date'])
 }

谢谢!

1 个答案:

答案 0 :(得分:3)

批量插入通常更快,因为它们一次处理数据,因为INSERT有一些开销(例如,SQL优化器无法扣除某些步骤)。也就是说,您需要处理大量行以创建显着的差异。

如果您好奇无论如何都很重要,那么请不要忘记测量框架将类映射到数据库表所花费的时间。 ORM消耗的资源比循环SQL INSERT更有可能。