Golang sql 包查询比 PostgreSQL SQL 查询慢



我正在使用Golang SQL包来调用我的数据库。我正在使用预准备语句,并在列上具有索引

stmtHas := db.Prepare(`SELECT value FROM `+tableName+` WHERE key = $1;`)
now     := time.Now()
err     := db.stmtGet.QueryRow(key).Scan(&value)  
elapsed := time.Since(now)
fmt.Println(elapsed)

这打印了-

40.874782毫秒

但是,与此相比,原始SQL查询花费的时间非常少。

EXPLAIN (ANALYZE, BUFFERS) SELECT value FROM tableName WHERE key = 'some_key';

给-

规划时间:0.062 ms
执行时间:0.040 ms

这些时间的差异正常吗?如果没有,如何优化它?

这实际上是在比较苹果和橙子。Go 代码时间表示将查询发送到 PostgreSQL 的时间、在 PostgreSQL 中执行查询所需的时间以及响应返回和处理所需的时间。EXPLAIN 命令仅表示在 PostgreSQL 中执行查询所需的时间。

最新更新