同样的sql语句查询用不同的orm,但是执行时间确实天差地别。
gorm写法
package main
import (
"fmt"
"gorm.io/driver/mysql"
"gorm.io/gorm"
"gorm.io/gorm/logger"
"log"
"os"
"time"
)
type LiveComment struct {
Id int `gorm:"column:id"`
}
var PlDb *gorm.DB
func InitPlDb() {
var err error
dsn := 此处省略连接信息
PlDb, err = gorm.Open(mysql.Open(dsn), &gorm.Config{
Logger: logger.New(
log.New(os.Stdout, "\r\n", log.LstdFlags), // io writer
logger.Config{
SlowThreshold: time.Second, // 慢 SQL 阈值
LogLevel: logger.Info, // Log level
Colorful: false, // 禁用彩色打印
},
),
})
if err != nil {
log.Fatalf("plDb connection failed:%q", err.Error())
}
sqlDB, err := PlDb.DB()
if err != nil {
log.Fatalf("plDb get db failed:%q", err.Error())
}
err = sqlDB.Ping()
if err != nil {
log.Fatalf("plDb ping failed:%q", err.Error())
}
}
func main() {
InitPlDb()
startTime := time.Now()
var row LiveComment
PlDb.Table("live_comment").Where("id = ?", 9069553).First(&row)
endTime := time.Now()
s := endTime.Sub(startTime)
fmt.Println(s)
// 输出97.318792ms
}
xorm写法
```go
package main
import (
"fmt"
_ "github.com/go-sql-driver/mysql"
"github.com/go-xorm/xorm"
"log"
"time"
)
type LiveComment struct {
Id int `xorm:"column:id"`
}
var PlDb *xorm.Engine
func InitPlDb() {
var err error
PlDb, err = 省略连接信息
if err != nil {
log.Fatalf("Mysql connection failed:%q", err.Error())
}
err = PlDb.Ping()
if err != nil {
log.Fatalf("Mysql connection failed:%q", err.Error())
}
}
func main() {
InitPlDb()
startTime := time.Now()
var row LiveComment
PlDb.Table("live_comment").Where("id = ?", 9069553).Get(&row)
endTime := time.Now()
s := endTime.Sub(startTime)
fmt.Println(s)
// 输出47.3425ms
}
上面是用gorm写的,查询的耗时是97.318792ms。同样的查询用xorm写,耗时确只有47.3425ms。有知道的可以给解答一下吗