批处理单独准备的npgsql命令

时间:2018-11-12 12:34:20

标签: npgsql

假设您有三个准备好的NpgsqlCommands。因为它们必须分开执行。但有时必须一次执行两个或全部三个(嗯,一个接一个)。

是否有一种方法可以通过一次往返服务器批处理和重用这些先前准备的命令? (目的是最大限度地减少延迟)

现在,我使用第四个命令,用分号分隔原始三个命令的副本,并进行准备-但我认为这将在服务器上使用更多资源,并在npgsql客户端上使用更多SQL解析。

1 个答案:

答案 0 :(得分:1)

Npgsql通过在您的CommandText中包含多个用分号分隔的语句来支持批处理。这些可以在单个网络往返中执行,也可以准备:

cmd.CommandText = "SELECT ...; UPDATE ...";
cmd.Prepare();

在内部,Npgsql在分号上拆分此类命令,并分别准备每个语句(PostgreSQL实际上不识别批处理,仅识别单个语句)。另外,Npgsql在每个语句级别管理准备好的语句,并且知道重用已经存在的语句。这意味着,如果准备两个包含相同语句的命令,则这些语句将共享相同的服务器端预处理语句资源。