首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用"BEGIN TRANSACTION“和"END TRANSACTION”提高性能

使用"BEGIN TRANSACTION“和"END TRANSACTION”提高性能
EN

Stack Overflow用户
提问于 2018-09-27 17:33:25
回答 1查看 93关注 0票数 0

我正在阅读Improve INSERT-per-second performance of SQLite?来提高我的SQLite的性能。

一个问题是:如果我需要执行以下查询:

代码语言:javascript
复制
INSERT INTO
INSERT INTO
...
INSERT INTO(more than 10000 times)

SELECT ...
SELECT 

UPDATE ...

如果我想提高性能,我应该在所有代码的开头和结尾插入"BEGIN TRANSATION“和"END TRANSATION”,如下所示:

代码语言:javascript
复制
BEGIN TRANSACTION

INSERT INTO
INSERT INTO
...
INSERT INTO(more than 10000 times)

SELECT ...
SELECT 

UPDATE ...
UPDATE ...

END TRANSACTION

或者我应该只为插入操作插入BEGIN/END TRANSACTION?

代码语言:javascript
复制
BEGIN TRANSACTION

INSERT INTO
INSERT INTO
...
INSERT INTO(more than 10000 times)

END TRANSACTION

SELECT ...
SELECT 

UPDATE ...
UPDATE ...
EN

回答 1

Stack Overflow用户

发布于 2018-09-27 17:46:00

如果插入的是同一个表,插入了相同的列,那么使用一个insert将显著提高性能,这是因为每个单独的insert命令都需要从数据库来回插入,这比实际的查询时间要长得多。

根据服务器的限制(登录的其他进程等),我会设置插入行数的限制,例如,一次1000行。

代码语言:javascript
复制
INSERT INTO table (col1, col2, col3,...) VALUES
{(v1, v2, v3,...), }X 1000;

远快于

代码语言:javascript
复制
{
INSERT INTO table (col1, col2, col3,...) VALUES
(v1, v2, v3,...);
}
X 1000

希望这能有所帮助

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52533833

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档