我希望能够在我的应用程序中评估我的查询,这是在Go中并使用github.com/lib/pq驱动程序。不幸的是,[lib / pq docs] [1]和[database / sql] [2] docs似乎都没有说明这一点,数据库/ sql接口中没有任何内容表明这是可能的。
有没有人找到获得此输出的方法?
答案 0 :(得分:4)
典型的EXPLAIN ANALYZE
会返回多行,因此您可以使用简单的sql.Query
执行此操作。这是一个例子:
package main
import (
"database/sql"
"fmt"
_ "github.com/lib/pq"
"log"
)
func main() {
db, err := sql.Open("postgres", "user=test dbname=test sslmode=disable")
if err != nil {
log.Fatal(err)
}
defer db.Close()
rows, err := db.Query("EXPLAIN ANALYZE SELECT * FROM accounts ORDER BY slug")
if err != nil {
log.Fatal(err)
}
for rows.Next() {
var s string
if err := rows.Scan(&s); err != nil {
log.Fatal(err)
}
fmt.Println(s)
}
if err := rows.Err(); err != nil {
log.Fatal(err)
}
}