【发布时间】:2018-09-27 09:33:24
【问题描述】:
我正在阅读Improve INSERT-per-second performance of SQLite? 的帖子以提高我的 SQLite 的性能。
一个问题是:如果我需要执行以下查询:
INSERT INTO
INSERT INTO
...
INSERT INTO(more than 10000 times)
SELECT ...
SELECT
UPDATE ...
如果我想提高性能,是否应该在所有代码的开头和结尾插入“BEGIN TRANSATION”和“END TRANSATION”,如下所示:
BEGIN TRANSACTION
INSERT INTO
INSERT INTO
...
INSERT INTO(more than 10000 times)
SELECT ...
SELECT
UPDATE ...
UPDATE ...
END TRANSACTION
或者我应该只为插入操作插入 BEGIN/END TRANSACTION 吗?
BEGIN TRANSACTION
INSERT INTO
INSERT INTO
...
INSERT INTO(more than 10000 times)
END TRANSACTION
SELECT ...
SELECT
UPDATE ...
UPDATE ...
【问题讨论】:
-
您当然可以运行类似于该帖子的测试 - 您也可以将更新包装在它自己的开始/结束以及插入中
-
@Andrew 我建议使用一个事务而不是两个事务,每个事务一个。