'LIMIT'参数如何在sql中工作?

Lui*_*uis 17 mysql sql limit

例如,我有4000行,我定义了X限制.

查询在找到X行后停止?或者查询找到所有行,然后从找到的行中获取X行?

谢谢.

Yuc*_*uck 23

来自MySQL参考手册:

如果将LIMIT row_count与ORDER BY一起使用,MySQL会在找到排序结果的第一行row_count行后立即结束排序,而不是对整个结果进行排序.如果使用索引完成排序,则速度非常快.如果必须完成文件排序,则必须先选择与没有LIMIT子句的查询匹配的所有行,并且必须先对其中的大部分或全部行进行排序,然后才能确定是否已找到第一个row_count行.在任何一种情况下,在找到初始行之后,不需要对结果集的任何其余部分进行排序,而MySQL也不会这样做.

因此看起来在应用之前可能已知整个结果集LIMIT.但MySQL会尝试一切不能这样做的东西.您可以通过提供与您的查询匹配的有用索引来帮助它.

编辑:此外,如果集合未排序,它会在将SELECT足够的行流式传输到结果集后立即终止操作.


Eri*_*est 17

SELECT*FROM your_tableLIMIT0, 10

这将显示数据库的前10个结果.

SELECT*FROM your_tableLIMIT5, 5

这将显示记录6,7,8,9和10

这就像告诉MySql;我希望你从5 + 1或第6条记录开始计算,但只选择最多5条记录

  • 这并没有真正回答这个问题.问题清楚地询问mysql如何处理LIMIT关闭而不是它如何处理它. (2认同)
  • 我仍然认为你没有回答这个问题.阅读标题和正文. (2认同)
  • 考虑一下:**例如,我有4000行,我定义了X限制.**= >>((抓住这一行))<< ==**_查询在找到X行后停止?_****或者**查询= >>((和这一行))**找到所有行,然后从找到的行中取X行?**.... MY_ANSWER简单地说:if Given:`SELECT*FROM your_table LIMIT 0,10 // MySql将返回从0`开始的10行和`SELECT*FROM your_table LIMIT 5,5 // MySql将返回行从6日和7日,8日,9日和10日开始`...**这个答案如何帮助用户?**....(一些如何)_我觉得被你的评论所欺负_ (2认同)
  • 对不起ErickBest我绝不想欺负你.我正在寻找有关LIMIT如何工作的解释,老实说,你的解释并没有提供比我已有的知识更多的知识.我重新阅读了这个问题,你的答案很抱歉,但不,谢谢你,你没有回答. (2认同)