Django 的 bulk_create 可以用一条 SQL 一次批量插入任意多的数据,可以用来做高效的数据插入。
https://docs.djangoproject.com/en/1.8/ref/models/querysets/
在 MySQL 和 SQLite 下测试时,使用 bulk_create 都很快,保存3千条数据,零点几秒就完成了(就几个字段,所以很快),但是在Oracle下,就变得非常慢,要慢上几十倍,甚至比循环调用save函数都来得慢。
把 bulk_create 编译出来的 SQL 直接在 PL/SQL Developer 中运行,只要1秒多,速度也是很快,把SQL 直接用 raw 的方式运行,速度也是很快。说明 Django 编译出来的 SQL 是没有问题的。
那么问题来了,bulk_create 到底是什么原因导致 Oracle 下会这么慢呢?