$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