我有一张包含数百万条记录的表格,而且我每天运行一次查询超过500天,最近它停止了工作。
查询如下:
SELECT id FROM table
ORDER BY column1 desc, column2 desc, column3 desc
LIMIT 522, 1
返回空结果集。但是,如果我将限制更改为小于500的任何值,它可以正常工作。
如果我删除限制并使用order by执行COUNT(id),则返回数百万行表的计数。
答案 0 :(得分:0)
我只能想象某种超时或错误发生。 order by
和limit
应该返回行,如果它们在那里。
首先,检查您是否收到错误。如果您是从应用程序调用,则需要检查错误状态。
如果超时,您可以考虑在table(column1 desc, column2 desc, column3 desc, id)
上添加索引。这应该从根本上改善查询的性能。
答案 1 :(得分:0)
不确定它是如何发生的,但在优化表后它又开始工作......
答案 2 :(得分:0)
远程诊断这些问题确实很困难,而且经常可以在MySQL日志中找到更多信息 - 这些对于诊断异常行为非常有帮助。
另外,尝试运行您的查询:
SELECT id FROM
(SELECT id FROM table
ORDER BY column1 desc, column2 desc, column3 desc) r
LIMIT 522, 1