我创建了用于在大型现有SQLite数据库中创建和填充表的SQL:
CREATE TABLE ...;
INSERT INTO ...;
INSERT INTO ...;
...
然后将其发送到sqlite3。无论我在SQLite提示中读取命令的方式如何(例如“sqlite3 db< create.sql”或“.read create.sql”),执行每一行都接近一秒,即使每行只包含两个字符串。
是什么导致SQLite工作这么慢?我怎样才能加快速度?
答案 0 :(得分:2)
inserts
可能会很慢,例如:
我建议您将插入内容合并到一个查询中。您可以使用insert . . . select
:
insert into table(col1, . . . coln)
select . . . union all
select . . . union all
. . .;
如果您只是在表中声明列,则可以将所有这些组合成一个语句:
create table xxx as
select . . . union all
select . . . union all
. . .;
答案 1 :(得分:1)
您需要将INSERT语句列表放入事务中:
BEGIN TRANSACTION;
CREATE TABLE ...;
INSERT INTO ...;
INSERT INTO ...;
...
COMMIT;
这将大大缩短执行时间。