我遇到了 .import 命令来执行此操作(批量插入),但是是否有一个可以使用 sqlite3_exec() 执行的查询版本。
我只想将一个小文本文件内容复制到表中。
下面这个的查询版本,
“.import demotab.txt mytable”
Sqlite 的性能并没有受益于批量插入。只需单独执行插入(但在单个事务内!)即可提供非常好的性能。
您可能会受益于增加 sqlite 的页面缓存大小;这取决于索引的数量和/或数据插入的顺序。如果没有任何索引,对于纯粹的插入,缓存大小可能并不重要。
请务必使用准备好的查询,而不是在最内层循环中重新生成查询计划。将语句包装在事务中非常重要,因为这可以避免文件系统将数据库同步到磁盘的需要 - 毕竟,部分写入的事务无论如何都会被原子中止,这意味着所有 fsync() 都会被延迟,直到事务完成。
最后,索引将限制您的插入性能,因为它们的创建有点昂贵。如果您确实要处理大量数据并从空表开始,那么添加索引可能会有所帮助after数据——尽管这不是一个重要因素。
哦,您可能想要购买一款英特尔 X25-E SSD,并确保您拥有 AHCI 控制器;-)。
我正在维护一个带有 sqlite 数据库的应用程序,大约有 500000000 行(分布在几个表上) - 其中大部分是使用普通旧的 begin-insert-commit 批量插入的:它工作正常。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)