0

我有一个查询,它在一个名为“历史”的表上返回 17,000 行。它有大约 15 个左连接到其他表,主要基于history.id = othertable.primary_id.

当我删除order by history.primary_id DESC查询时非常快。什么时候order by history.primary_id DESC有 MySQL 需要大约 26 秒才能写入临时表..非常慢。

但是,当存在“order by ”但省略连接时,它很快。

我不明白为什么写入临时表的数据依赖于连接?在查询执行之后,MySQL 不是已经知道 17,000 行包含什么吗?

根据“ EXPLAIN ”,我的索引设置得很好,但对于我来说,我无法对这个查询进行排序。我想使用 1000 的限制,但是当我无法排序时它是无用的。我似乎无法让它不使用临时表。

这是查询的屏幕截图。

4

0 回答 0