如何在Perl,DBI中显示查询时间?

net*_*djw 8 mysql perl dbi

我使用Perl和DBI来管理我的MySQL表,查询等.如何显示查询的运行时间?

如果我在控制台中执行SELECT,结果将如下所示:

+-----+-------------+
| id  | name        |
+-----+--------------
|   1 | Jack        |
|   2 | Joe         |
|   3 | Mary        |
+-----+-------------+
3 rows in set (0.17 sec)
Run Code Online (Sandbox Code Playgroud)

我需要表明0.17 sec.在DBI中有什么方法可以显示Perl的运行时间,这样的话吗?

my $dbh = $db->prepare("SELECT id, name FROM names ORDER BY id;");
$dbh->execute;
print $dbh->runnin_time; # ???
Run Code Online (Sandbox Code Playgroud)

lan*_*nzz 6

在运行查询之前,您需要一个时间戳,以及之后的时间戳.不同之处在于查询执行时间.要获得高分辨率时间戳,请参阅Time :: HiRes


dax*_*xim 6

DBI#Profile,DBI :: Profile,DBI :: ProfileData,DBI :: ProfileDumper,dbiprof

  • 请提供一些摘录,说明为什么这些链接很有用,而不是提供一系列链接.这有助于总结内容,并在链接腐烂和中断时提供有用的信息. (2认同)

gpw*_*pwr 1

使用 Time::HiRes 也可以是查找查询时间的简单方法。以下是使用 Time::HiRes 的示例:

use Time::HiRes;

$start_time = Time::HiRes::gettimeofday();

my $dbh = $db->prepare("SELECT id, name FROM names ORDER BY id;");
$dbh->execute;

$end_time = Time::HiRes::gettimeofday();

my $elapsedtime = sprintf("%.6f", $end_time - $start_time);
print "Execution time(seconds) : $elapsedtime \n";
Run Code Online (Sandbox Code Playgroud)