如何记录查询时间?

How can I log query time?

我很少有这样的 oledb 连接:

try
{
    OleDbConnection Connection8;
    using (Connection8 = new OleDbConnection("Provider=MSDAORA.1;Data Source=DATABASE:1521/orcl;Persist Security Info=True;Password=PASSWORD;User ID=USERNAME;"))
    {
        string sqlQuery = "select * from TABLE";

        using (OleDbDataAdapter cmd = new OleDbDataAdapter(sqlQuery, Connection8))
        {
            Connection8.Open();
            DataTable dt = new DataTable();
            cmd.Fill(dt);
            GridView5.DataSource = dt;
            GridView5.DataBind();
            v8 = 1;
            Connection8.Close();
        }
    }
}
catch (Exception)
{
    v8 = 0;
}

有些连接等了很久,但我不知道是哪一个。

如何记录或查看每个连接的查询时间?有什么建议吗?谢谢。

您可以使用 Stopwatch:

var stopwatch = new Stopwatch();
DataTable dt = new DataTable();
stopwatch.Start();
Connection8.Open();
cmd.Fill(dt);
stopwatch.Stop();

var timeElapsed = stopwatch.ElapsedMilliseconds;

请注意,在我显示的示例中,打开连接的时间将包含在测量时间中。如果您不需要它并且想要 "pure" 查询执行时间 - 那么只需更改打开连接和启动秒表的顺序 od 行。

我不知道这是否可行,因为您使用的是 OleDbConnection,但您可以做的一件事是在控制面板中打开 "Odbc Administrator"(一定要检查是否你想要 32 位或 64 位)有一个你可以打开的 "Tracing" 选项卡,它会为你提供所有已处理的 ODBC 请求的日志文件。

但是请记住,正如我所说,因为您使用的是 OleDbConnection 它可能不会记录任何内容。

我以前用过 Glimpse,可能对你也有用:

http://getglimpse.com/