gpt4 book ai didi

c# - Npgsql:准备好的语句如何

转载 作者:行者123 更新时间:2023-11-29 13:07:23 25 4
gpt4 key购买 nike

我们正在为多人游戏开发数据库后端。服务器用 C# 编写,并通过 Npgsql 与 Postgres 数据库对话。

现在,手册展示了如何使用准备好的语句:

NpgsqlCommand command = new NpgsqlCommand("select * from tablea where column1 = :column1", conn);
// Now add the parameter to the parameter collection of the command specifying its type.
command.Parameters.Add(new NpgsqlParameter("column1", NpgsqlDbType.Integer);
// Now, prepare the statement.
command.Prepare();
// Now, add a value to it and later execute the command as usual.
command.Parameters[0].Value = 4;

它指出准备好的语句仅在数据库 session 中有效。我现在有两个问题:

1.) 如果我使用相同的命令文本和参数类型创建一个新的 NpgsqlCommand 对象,服务器是否会识别出该命令已准备好,或者我是否必须保留该对象并在再次执行之前简单地更改变量?在示例中,命令对象在查询之后处理。

2.) 尽管我们只有这种风格的简单语句,但准备好的语句是否可能会提高性能:

SELECT f1,f2 FROM t1
UPDATE t1 SET f1=1, f2=2

可能会连续执行数百个具有相同样式的查询 - 当前为每个查询创建一个新的 NpgsqlCommand(以及 NpgSql 池中的 NpgsqlConnection)对象。

谢谢!

最佳答案

我建议您不要使用准备好的语句。 Npgsql 还没有很好的性能。 :( 抱歉。

另外,为了发送很多插入命令,我认为你应该看看 NpgsqlCopy 支持。它会给你更好的表现。希望对您有所帮助。

关于c# - Npgsql:准备好的语句如何,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4405116/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com