Sql 使用;“开始交易”;及;“结束交易”;提高性能
我阅读这篇文章是为了提高SQLite的性能 一个问题是:如果我需要执行以下查询:Sql 使用;“开始交易”;及;“结束交易”;提高性能,sql,sqlite,Sql,Sqlite,我阅读这篇文章是为了提高SQLite的性能 一个问题是:如果我需要执行以下查询: INSERT INTO INSERT INTO ... INSERT INTO(more than 10000 times) SELECT ... SELECT UPDATE ... 如果我想提高性能,我是否应该在所有代码的开头和结尾插入“开始交易”和“结束交易”,如下所示: BEGIN TRANSACTION INSERT INTO INSERT INTO ... INSERT INTO(more th
INSERT INTO
INSERT INTO
...
INSERT INTO(more than 10000 times)
SELECT ...
SELECT
UPDATE ...
如果我想提高性能,我是否应该在所有代码的开头和结尾插入“开始交易”和“结束交易”,如下所示:
BEGIN TRANSACTION
INSERT INTO
INSERT INTO
...
INSERT INTO(more than 10000 times)
SELECT ...
SELECT
UPDATE ...
UPDATE ...
END TRANSACTION
或者我应该只为插入操作插入开始/结束事务吗
BEGIN TRANSACTION
INSERT INTO
INSERT INTO
...
INSERT INTO(more than 10000 times)
END TRANSACTION
SELECT ...
SELECT
UPDATE ...
UPDATE ...
如果插入的是同一个表,插入的列相同,则使用一个插入将显著提高性能,这是因为每个单独的插入命令都包括从数据库来回执行,比实际查询时间长得多 根据服务器的限制(其他进程登录等),我会对插入的行数设置一个限制,例如一次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
希望这会有所帮助您当然可以运行类似于那篇文章的测试-您还可以在它自己的开始/结束以及inserts@Andrew我建议用一笔交易而不是两笔,一笔一笔。谢谢。但这会产生很长的SQL语句吗?SQLite对SQL语句的长度有限制吗?还有“INSERT INTO table(col1,col2,col3,…)VALUES(v1,v2,v3,…);”,我可以使用sqlite3_prepare_v2准备SQL语句,然后将参数绑定到语句。但在表(col1,col2,col3,…)中插入值{(v1,v2,v3,…)}x1000;似乎prepared语句的优势已经不存在了。首先,字符串限制很长,即使1000太长,500也可以。第二,你问了关于性能的问题。。。一次插入更多行可以提高性能。您认为代码的舒适性是另一回事……sqlite查询的最大大小