我将Go和Gorm用于Postgresql。
我想了解两者之间的区别
此:
var name = "myName"
var user User
db.Where("user like ?", name).Find(&user)
和这个:
var user User
db.Where("user like " + name).Find(&user)
SQL查询是相同的。
我的意思是,为什么我们要使用ORM?
第一名可以成为准备好的陈述吗?
排名第一的广告是否比排名第二的广告“更优化”?
“更优化”是什么意思?
答案 0 :(得分:1)
要专门回答您的问题:
第一名可以成为准备好的陈述吗?
通常,ORM将构建准备好的语句,以便(如Flimzy所解释的那样)您可以避免sql注入,并且DB引擎不需要重新计算查询计划。
Gorm似乎具有用于缓存准备好的语句的特定配置: https://gorm.io/docs/v2_release_note.html#Prepared-Statement-Mode
排名第一的广告是否比排名第二的广告“更优化”?
您可以从数据库和语言角度看这部分。
"user like"
创建一个字符串,然后为串联"user like" + name
创建另一个字符串。如果此代码多次执行(例如在循环中),您将看到执行时间增加,仅仅是因为每个字符串都意味着分配了新的内存地址。“更优化”是什么意思?
更多优化意味着更快。 如上所述: