$this->db->insert_batch();
是否插入1个表连接,还是插入每行分开招致打开连接开销?Codeigniter批量插入性能
回答
从代码点火器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')
因此,这将产生唯一一个所有值的查询,通常这种方式更快然后做单独的刀片。
要回答你的问题:它使用一个连接。
其实@RageZ基于文档的答案并不总是正确的。因为它完全基于您想要插入的项目数量。在查看codeigniter 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
部分你可以看到它的外观,当您使用插入批次101个项目等。因此,根据您的连接首选项,可能会有多个连接需要在db中插入。
@ Ragez的答案可能是真实的,当问这个问题时,我想我使用的是CI 1.xx – 2014-02-14 11:28:13
@amiawizard这可以是正确的,唯一的方法是确保看代码。据我所知他们没有改变这部分文件从1.x,但它可能代码已经从1.x更改为2.x – sobhan 2014-02-14 18:58:09
@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 2014-02-14 20:56:48
- 1. JDBC批量插入性能
- 2. 批量插入预期性能
- 3. 批量大小如何影响批量插入性能?
- 4. 什么是最好的性能批量插入或切片多批次插入?
- 5. 批量/批量插入R
- 6. 批量插入Cassandra
- 7. Grails批量插入
- 8. SQLite3:批量插入?
- 9. Bigtable批量插入
- 10. AsyncQueryHandler批量插入
- 11. HQL批量插入
- 12. 批量插入行
- 13. Laravel批量插入
- 14. Scrapy批量插入
- 15. SubSonic批量插入
- 16. MySQL批量插入
- 17. 使用批量API将批量批量插入弹性搜索存储
- 18. JPA/Hibernate批量(批量)插入
- 19. 在SQLite缓慢批量/批量插入
- 20. 便携式JPA批量/批量插入
- 21. 以百万数据批量插入的T-SQL性能问题
- 22. SQL - 优化批量插入和大型连接的性能?
- 23. extjs4 - 商店中的批量插入导致性能问题
- 24. MongoDB中的多个批量插入 - 性能
- 25. MongoDB和Sql Server的批量插入性能比较
- 26. 从Delphi执行批量插入时的Oracle性能
- 27. 批量插入的LINQ-to-SQL性能问题
- 28. Codeigniter - 插入批处理 - 我的sql
- 29. 安全插入批处理? codeigniter
- 30. Azure不能插入超过1个实体(批量插入) - JAVA
数据库连接应始终为1,无论是否为批处理。 – Usman 2011-12-26 14:01:18