如何使用 servicestack 批量调用 sql
How to batch sql calls using servicestack
我有一个应用程序几乎连续写入记录以响应系统事件。我正在使用 C# ServiceStack Ormlite。我想知道是否有一种简单的方法来批处理这些插入,而不是一次写入一个,而是收集 X 多个然后写入一个事务。这将减少磁盘使用并加快应用程序的速度(其他事情正在发生)。
Win 10,VS2019 C# SQLite
您可以使用 InsertAll()
,它比单独的 Insert()
语句更有效,因为它在单个隐式事务中执行所有插入,并对每条记录重复使用相同的参数化插入语句,但它不是构造单个 SQL 语句并将其发送到 RDBMS 的效率类似于:
var sb = new StringBuilder();
foreach (var row in rows)
{
sb.Append(db.ToInsertStatement(row)).AppendLine(";");
}
db.ExecuteSql(sb.ToString());
您可以使用结构化数据类型,即 Table 批量插入数据类型
并在存储过程中
你可以
insert into table (some columns)
select some columns
from @structured_variable (table variable)
我有一个应用程序几乎连续写入记录以响应系统事件。我正在使用 C# ServiceStack Ormlite。我想知道是否有一种简单的方法来批处理这些插入,而不是一次写入一个,而是收集 X 多个然后写入一个事务。这将减少磁盘使用并加快应用程序的速度(其他事情正在发生)。
Win 10,VS2019 C# SQLite
您可以使用 InsertAll()
,它比单独的 Insert()
语句更有效,因为它在单个隐式事务中执行所有插入,并对每条记录重复使用相同的参数化插入语句,但它不是构造单个 SQL 语句并将其发送到 RDBMS 的效率类似于:
var sb = new StringBuilder();
foreach (var row in rows)
{
sb.Append(db.ToInsertStatement(row)).AppendLine(";");
}
db.ExecuteSql(sb.ToString());
您可以使用结构化数据类型,即 Table 批量插入数据类型
并在存储过程中 你可以
insert into table (some columns)
select some columns
from @structured_variable (table variable)