mysql - 从 mysql-client 即时运行的慢查询

标签 mysql

我在/var/log/mysql/mysql-slow.log 中记录了一个慢速查询,使用 PDO 从 php 运行,当我将其复制粘贴到 mysql-client 中时,即使在重新启动后,我也会立即得到答案mysql。你如何解释这一点?

这是查询:

SELECT many_fields FROM some_table u WHERE (u.created_at >= '2011-11-01' AND u.created_at <= '2012-02-01' AND u.valid IS TRUE AND u.test IS FALSE);

以下是查询的解释:

+----+-------------+-------+------+---------------+------+---------+------+-------+-------------+
| id | select_type | table | type | possible_keys | key  | key_len | ref  | rows  | Extra       |
+----+-------------+-------+------+---------------+------+---------+------+-------+-------------+
|  1 | SIMPLE      | u     | ALL  | NULL          | NULL | NULL    | NULL | 86460 | Using where |
+----+-------------+-------+------+---------------+------+---------+------+-------+-------------+

这是运行 php 脚本时 SHOW FULL PROCESSLIST 的输出:

+-----+---------+-----------+-----------------------+---------+------+-------+-----------------------+
| Id  | User    | Host      | db                    | Command | Time | State | Info                  |
+-----+---------+-----------+-----------------------+---------+------+-------+-----------------------+
|   9 |some_user| localhost | some_db               | Query   |    0 | NULL  | SHOW FULL PROCESSLIST |
| 187 |some_user| localhost | some_db               | Sleep   |    6 |       | NULL                  |
+-----+---------+-----------+-----------------------+---------+------+-------+-----------------------+

最佳答案

正如您在回复我的评论时所说,您正在记录不使用索引的查询。此查询未使用索引,因此它会与慢速查询一起记录。由于不使用索引而记录的查询在记录时会忽略最短执行时间。

编辑:SHOW FULL PROCESSLIST 中的Time 列显示其处于当前状态的时间,通常设置为Sleep当查询完成时,时间对于计时查询来说不可靠。为了获得更可靠的查询计时,您需要使用分析或其他更直接地处理查询的基准测试方法。

关于mysql - 从 mysql-client 即时运行的慢查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14735300/

相关文章:

java - JPA映射MySQL json类型,出现乱码

mysql - 如何按点击状态对表格进行升序和降序排序? MySQL/ColdFusion

php mysql 如果总和不起作用

mysql - 将数据库的表名称与另一个表中的值映射

php - 使用 php 将逗号分隔值插入 mysql 字段

php - 获取MySQL查询的计数结果PHP

mysql 意外语法错误

sql - 是否可以取代 mysql 中的 ORDER BY 子句?

sql - 这个 MySQL 数据库可以改进吗?或者它是好的吗?

mysql - 在 ConstraintViolationException 导致 AssertionFailure 后 Hibernate session 无法查询