0

我在 .sql 文件中有一些基准查询。如果我在 mysql 中使用 source 来执行它们,mysql 将在每次查询后显示运行时间。并且有页面和页面查询输出。有什么方法可以获得所有查询的总运行时间?

非常感谢!

4

3 回答 3

2

您可以通过将此行添加到您的以下来使用 MySQL 的内置分析支持my.cnf

SET profiling=1;

这使您可以轻松查看每个查询所花费的时间:

mysql> SHOW PROFILES;
+----------+-------------+-------------------------------------------------------------------+
| Query_ID | Duration    | Query                                                             |
+----------+-------------+-------------------------------------------------------------------+
|        1 |  0.33174700 | SELECT COUNT(*) FROM myTable WHERE extra LIKE '%zkddj%'           | 
|        2 |  0.00036600 | SELECT COUNT(id) FROM myTable                                     | 
|        3 |  0.00087700 | CREATE TEMPORARY TABLE foo LIKE myTable                           | 
|        4 | 33.52952000 | INSERT INTO foo SELECT * FROM myTable                             | 
|        5 |  0.06431200 | DROP TEMPORARY TABLE foo                                          | 
+----------+-------------+-------------------------------------------------------------------+
5 rows in set (0.00 sec)

您可以将时间相加以获得总时间:

SELECT SUM(Duration) from information_schema.profiling;

您可以在此处找到有关 MySQL 分析的更多详细信息。

您可以采用另一种方法来运行从命令行执行 SQL 查询并使用 Unixtime命令来计时执行。但是,这可能不会给您最精确的时间。此外,除非您将它与 MySQL 分析结合使用,否则它不会为您提供每个查询所用时间的细分。

于 2012-11-22T01:39:35.480 回答
1

您可以修改您的 .sql 以创建带有时间戳的开始和结束行,然后减去,而无需拿出 Excel 电子表格并将其相加。

于 2012-11-22T01:43:56.927 回答
0

感谢所有的建议。我最终创建了另一个表,只是为了在 .sql 文件中记录每个查询的开始和结束时间。

我编辑了 .sql 文件,在每个原始查询之后添加了一个插入语句,只是为了记录时间。最后,我可以查询这个“时间”表来分析 .sql 文件的执行情况。

于 2012-11-23T04:48:57.690 回答