我正在阅读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 ...发布于 2018-09-27 17:46:00
如果插入的是同一个表,插入了相同的列,那么使用一个insert将显著提高性能,这是因为每个单独的insert命令都需要从数据库来回插入,这比实际的查询时间要长得多。
根据服务器的限制(登录的其他进程等),我会设置插入行数的限制,例如,一次1000行。
INSERT INTO table (col1, col2, col3,...) VALUES
{(v1, v2, v3,...), }X 1000;远快于
{
INSERT INTO table (col1, col2, col3,...) VALUES
(v1, v2, v3,...);
}
X 1000希望这能有所帮助
https://stackoverflow.com/questions/52533833
复制相似问题