是否有可能通過單個查詢插入多個實體到數據庫? 當我使用here一個例子,我可以看到幾個查詢,在Web調試Doctrine2批插入
已更新2012年8月23日
我發現下面的相關鏈接。我希望這將有助於別人瞭解批處理:
- http://www.doctrine-project.org/blog/doctrine2-batch-processing.html
- doctrine2 - How to improve flush efficiency?
- Doctrine 2: weird behavior while batch processing inserts of entities that reference other entities
主要的事情:
有些人似乎很奇怪爲什麼學說不使用 多插入(insert into(...) (...),(...),(...),...
首先,該語法只支持mysql和更新的postgresql版本。其次,當使用 AUTO_INCREMENT或SERIAL時,並沒有簡單的方法來獲得所有生成的標識符在這樣的多插入中,並且ORM需要標識符來管理對象的身份 。最後,插入性能很少是ORM的瓶頸。正常的插入對於大多數情況來說足夠快,如果你真的想做快速的大容量插入,那麼多重插入不是最好的方式,即Postgres COPY或Mysql LOAD DATA INFILE快幾個數量級。
這些是爲什麼不值得努力實現在ORM中執行在mysql和postgresql上執行多重插入的抽象的原因。 我希望清除一些問號。
感謝您的答覆,但我不知道,'只有一個查詢每「刷新」 call'數據庫,因爲我可以看到執行的時間爲每個INSERT語句。這意味着每個INSERT語句都是對數據庫的一個查詢。我更新了我的問題 – Mikhail