【发布时间】:2021-12-03 23:39:24
【问题描述】:
我们目前正在处理一个奇怪情况下的慢查询。当我们LIMIT 将结果按 1、2、3、4、5、6 计算时,问题就出现了,但它适用于任何其他限制。此问题也仅限于这一特定用户。我们无法与任何其他用户重现缓慢/超时。
我们可以更改ORDER BY 以使用不同的列,这样查询就可以工作了。我们可以删除LIMIT 1,查询就可以了。一旦我们将LIMIT 更改为 1-6 之间的任何值,它就会超时。
我们可以将ORDER BY 设置在不同的列上,但这可能会导致将来出现报告问题,并且无法解决“为什么”会发生这种情况。
查询:
SELECT
*
FROM
table_name tn
WHERE
tn.user = '123'
ORDER BY
timestamp_col DESC
LIMIT 1
还有我们的数据:
user --- timestamp_col ---
123 2005-02-23 02:02:34
123 2005-03-21 00:12:30
123 2006-01-09 14:23:48
123 2006-01-10 15:01:05
123 2006-01-20 13:11:13
123 2006-10-20 20:08:00
123 2006-11-01 18:31:03
123 2006-12-01 09:10:12
timestamp订购时有什么特殊需求吗?
【问题讨论】:
-
请添加两种情况的执行计划(
explain select ...的输出用于工作和非工作查询,例如限制 1 和限制 7)。
标签: mysql performance timeout