golang中的DB.Query()和DB.Prepare()+Stmt.Query()有什么区别

golang中的DB.Query()和DB.Prepare()+Stmt.Query()有什么区别,go,Go,这两种方案可以实现相同的功能,那么它们之间有什么区别呢? 参考: DB.Query 查询执行返回行的查询,通常是SELECT。参数用于查询中的任何占位符参数 根据定义,它接受单个查询并返回要从中迭代的行 DB.Prepare+Stmt.Query Prepare为以后的查询或执行创建准备好的语句。可以从返回的语句同时运行多个查询或执行 func (s *Stmt) Query(args ...interface{}) (*Rows, error) Query使用给定的参数执行准备好的查询语句,

这两种方案可以实现相同的功能,那么它们之间有什么区别呢? 参考:

DB.Query

查询执行返回行的查询,通常是SELECT。参数用于查询中的任何占位符参数

根据定义,它接受单个查询并返回要从中迭代的行

DB.Prepare+Stmt.Query

Prepare为以后的查询或执行创建准备好的语句。可以从返回的语句同时运行多个查询或执行

func (s *Stmt) Query(args ...interface{}) (*Rows, error)
Query使用给定的参数执行准备好的查询语句,并以*行的形式返回查询结果


由于DB.prepare可以接受多个查询,Stmt.Query可以同时运行它们,因此这也可以用于运行多个并发查询,而DB.Query则用于执行单个查询

这里有一个参考:但我希望在特定时间点执行单个查询,两者之间有区别吗?如果我有一个特定的查询,我打算使用不同的参数多次使用,但不经常使用,也不是并行使用,我还应该准备一个语句吗?在应用程序的整个生命周期内不关闭Stmt有意义吗?
func (db *DB) Prepare(query string) (*Stmt, error)
func (s *Stmt) Query(args ...interface{}) (*Rows, error)