Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/81.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
我可以通过lib/pq Go SQL驱动程序获得解释分析输出吗?_Sql_Postgresql_Go - Fatal编程技术网

我可以通过lib/pq Go SQL驱动程序获得解释分析输出吗?

我可以通过lib/pq Go SQL驱动程序获得解释分析输出吗?,sql,postgresql,go,Sql,Postgresql,Go,我希望能够在我的应用程序中评估我的查询,该应用程序位于Go中,使用github.com/lib/pq驱动程序。不幸的是,[lib/pq docs][1]和[database/sql][2]文档似乎都没有提到这一点,数据库/sql接口中也没有任何内容表明这是可能的 有人找到了获取此输出的方法吗?典型的解释分析返回几行,因此您可以使用simplesql.Query执行此操作。以下是一个例子: package main import ( "database/sql" "fmt"

我希望能够在我的应用程序中评估我的查询,该应用程序位于Go中,使用github.com/lib/pq驱动程序。不幸的是,[lib/pq docs][1]和[database/sql][2]文档似乎都没有提到这一点,数据库/sql接口中也没有任何内容表明这是可能的


有人找到了获取此输出的方法吗?

典型的
解释分析
返回几行,因此您可以使用simple
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)
    }
}

我不熟悉Go驱动程序,所以我不知道其中的特殊性,但解释/解释分析输出看起来就像选择输出-您可以返回一列宽的表格数据,每个查询计划步骤有一行,因此,您应该能够使用常规的行迭代方法来处理explain结果,就像处理任何select语句结果一样。