MySQL 查询中 ORDER BY 和 LIMIT 的执行顺序

vik*_*tra 5 mysql sql-order-by limit sql-execution-plan

我有一个这样的查询,我想以分页格式显示排序的记录。

这是我的查询。

SELECT * FROM answers
WHERE userid = '10'
ORDER BY votes LIMIT 10, 20
Run Code Online (Sandbox Code Playgroud)

to 的两个参数LIMIT将用于生成记录的逐页显示。现在,我的问题是ORDER BY。MySQL 如何执行这个查询?

第一种方式

  • 根据过滤器选择记录
  • 对它们进行排序
  • 限制他们

第二种方式

  • 根据过滤器选择记录
  • 限制他们
  • 对它们进行排序

如果我像 MySQL 引擎一样思考,我想实现第二个,因为我将不得不对较少的记录进行排序?

有人可以对此有所了解吗?

问候

Kde*_*per 6

SQL LIMIT在所有数据库中始终适用于查询结果,因此它将使用ORDER BY运行查询,然后结果将受到限制。这是一个功能需求,数据库本身并不需要像这样执行它。

因此第一种方式。