如果从结果集中只需要指定数量的行,则LIMIT在查询中使用子句,而不是获取整个结果集并丢弃多余的数据。
MySQL有时会优化具有子句和无 子句的查询: LIMIT row_countHAVING
如果仅使用来选择几行 LIMIT,则在通常情况下,MySQL倾向于使用全表扫描,因此在某些情况下会使用索引。
如果与结合使用 ,MySQL会在找到排序结果的第一行后立即停止排序 ,而不是对整个结果进行排序。如果通过使用索引进行排序,这将非常快。如果必须执行文件排序,则在找到第一个之前,将选择所有与查询匹配的不带子句的行,并对其中的大多数或全部进行排序 。找到初始行后,MySQL不会对结果集的其余部分进行排序。 LIMIT row_countORDER BYrow_countLIMITrow_count
此行为的一种体现是,ORDER BY具有和不具有 查询的查询 LIMIT可能以不同顺序返回行,如本节稍后所述。
如果与结合使用,MySQL 将在 找到唯一行后立即停止。 LIMIT row_countDISTINCTrow_count
在某些情况下,GROUP BY可以通过按顺序读取索引(或对索引进行排序),然后计算汇总直到索引值更改来解决a。在这种情况下,不计算任何不必要的 值。 LIMIT row_countGROUP BY
MySQL一旦向客户端发送了所需的行数,它将立即中止查询,除非您正在使用 SQL_CALC_FOUND_ROWS。在这种情况下,可以使用检索行数SELECT FOUND_ROWS()。请参见 第12.15节“信息功能”。
LIMIT 0快速返回一个空集。这对于检查查询的有效性很有用。它还可以用于获取使用MySQL API的应用程序中结果列