c mysql prepared,c# – MySql:使用Prepared语句使用.NET / Connector可以更快地调用存储过程吗?...

我一直在阅读有关使用MySql的Prepared语句,并且.NET / Connector确实支持它们.

我想知道的是,如果我使用预准备语句来调用相同的存储过程数千次,那么是否比使用预准备语句更快或更好的性能(因为存储过程应该已经编译好了)?

例如:

var mySqlCmd = new MySqlCommand(con, "call sp_someProcedure(@param1, @param2);");

mySqlCmd.Prepare();

mySqlCmd.Parameters.AddWithValue("@param1", "");

mySqlCmd.Parameters.AddWithValue("@param2", "");

for (int i = 0; i < 1000; i++)

{

mySqlCmd.Parameters["@param1"].Value = i.ToString();

mySqlCmd.Parameters["@param2"].Value = i.ToString();

mySqlCmd.ExecuteNonQuery();

}

解决方法:

准备好的声明需要至少2个db调用.第一个调用(prepare)获取应用程序级别的sql语句,例如从user_id =?的用户中选择*?并在数据库中创建一个查询模板,然后进行解析和验证.后续调用只涉及将值从应用程序层传递到db,然后将其插入到模板中并执行.

数据库中已存在存储过程.它在创建过程中已经过解析和验证.存储过程有点像上面提到的模板,但它是数据库的永久特性而不是临时特征.

因此,要执行存储过程,您只需要传递它params – 您不需要准备它.

标签:sql,mysql,net,prepared-statement,c-2

来源: https://codeday.me/bug/20191008/1874412.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值