我们有一个相当复杂的查询,我们已经非常仔细地进行了优化。它运作良好,除了不时,它突然比平常花费更多的时间。它似乎与CPU或RAM无关。
我们已经能够找出似乎是问题的东西:查询的慢实例在slow_query.log中显示了一个非常高的Rows_examined数字:
- Normal execution time: Rows_examined: 140003
- Slow execution time: Rows_examined: 2265473
然而,查询几乎总是相同的:我们只是稍微调整一个条件,变化无法解释行数的这种变化(我们手动检查)。除了:
- the slowness occurs fairly randomly.
- when we "explain" the queries, the output is exactly the same
查询如下所示:
SELECT A2.stuff, B.stuff, C.stuff FROM
(SELECT A.stuff WHERE ... ORDER BY ... LIMIT ...) A2
STRAIGHT_JOIN B
STRAIGHT_JOIN C
WHERE ...
我道歉:这是一个相当开放的问题。我只是希望有人知道这种行为,并指出我的方向正确。