为了账号安全,请及时绑定邮箱和手机立即绑定

为什么在 go sql 包中使用准备好的语句而不是 Query / Exec?

为什么在 go sql 包中使用准备好的语句而不是 Query / Exec?

Go
弑天下 2021-09-10 21:07:37
在gosql包中,我理解每个语句在执行后应该关闭。为什么有人会使用准备好的语句而不仅仅是原始Query或Exec方法?
查看完整描述

2 回答

?
qq_花开花谢_0

TA贡献1835条经验 获得超7个赞

我认为最好的答案来自关于Prepared Statements的维基百科文章。

引用:

尽管语句执行多次,但编译和优化语句的开销仅发生一次。并非所有优化都可以在编译准备好的语句时执行,原因有两个:最佳计划可能取决于参数的具体值,并且最佳计划可能会随着表和索引的变化而变化。`在此处输入代码

准备好的语句对 SQL 注入具有弹性,因为稍后使用不同协议传输的参数值不需要正确转义。如果原始语句模板不是来自外部输入,则不会发生 SQL 注入。


查看完整回答
反对 回复 2021-09-10
?
元芳怎么了

TA贡献1798条经验 获得超7个赞

准备好的语句已经绑定到数据库的具体连接,包含低级 driver.Stmt 并且可以被多个 go-routing 并发使用。所以准备和使用非常方便,而且工作速度更快。


查看完整回答
反对 回复 2021-09-10
  • 2 回答
  • 0 关注
  • 207 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信