【问题标题】:How to know what the select query took time?如何知道选择查询花费了多少时间?
【发布时间】:2022-10-08 17:14:46
【问题描述】:

我有 4 个查询,我想比较它们之间的时间,是否有任何命令可以显示每个查询所用的时间?

【问题讨论】:

  • 你是如何运行查询的?
  • @IMSoP 假设我想知道这个简单查询需要多长时间,select * from table
  • 使用 EXPLAIN ANALYZE 您的查询
  • @RahulBiswas 我已经尝试过了,但是没有显示查询时间的列
  • 这根本不能回答我的问题。我之所以问,是因为许多可以手动运行查询的工具会在每个结果旁边显示所用的时间,并且运行它们的任何编程语言都可以比较开始和结束时间(例如 microtime(true);在 PHP 中)。

标签: mysql sql


【解决方案1】:

您可以使用SHOW PROFILE Statement

通过使用启用它:

SET profiling = 1;

例如,我执行了一些查询,如下所示:

mysql> CREATE TABLE T1 (id INT);

mysql> use gesti;

mysql> show tables;

mysql> select * from orders limit 10;


mysql> show profiles;
+----------+------------+-------------------------------+
| Query_ID | Duration   | Query                         |
+----------+------------+-------------------------------+
|        1 | 0.38483575 | CREATE TABLE T1 (id INT)      |
|        2 | 0.00039525 | SELECT DATABASE()             |
|        3 | 0.00604350 | show tables                   |
|        4 | 0.00075625 | select * from orders limit 10 |
+----------+------------+-------------------------------+
4 rows in set, 1 warning (0.00 sec)

【讨论】:

  • SQL 版本 5.7
  • 将示例留在dbfiddle 中进行测试
  • 您的示例对我来说不够明显,我希望您将其添加到我的数据库之外进行测试。
  • 我应该在每次查询之前启用SET profiling = 1; 吗?
【解决方案2】:

MySQL 中不推荐使用 SET 分析,还有其他选择吗

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-06-22
    • 1970-01-01
    • 2013-07-11
    • 1970-01-01
    • 2018-07-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多