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

在gosql包中,我理解每个语句在执行后应该关闭。为什么有人会使用准备好的语句而不仅仅是原始QueryExec方法?


弑天下
浏览 208回答 2
2回答

qq_花开花谢_0

我认为最好的答案来自关于Prepared Statements的维基百科文章。引用:尽管语句执行多次,但编译和优化语句的开销仅发生一次。并非所有优化都可以在编译准备好的语句时执行,原因有两个:最佳计划可能取决于参数的具体值,并且最佳计划可能会随着表和索引的变化而变化。`在此处输入代码准备好的语句对 SQL 注入具有弹性,因为稍后使用不同协议传输的参数值不需要正确转义。如果原始语句模板不是来自外部输入,则不会发生 SQL 注入。

元芳怎么了

准备好的语句已经绑定到数据库的具体连接,包含低级 driver.Stmt 并且可以被多个 go-routing 并发使用。所以准备和使用非常方便,而且工作速度更快。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go