Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/86.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 找到X行后,如何停止在数据库中查找?_Sql_Mysql - Fatal编程技术网

Sql 找到X行后,如何停止在数据库中查找?

Sql 找到X行后,如何停止在数据库中查找?,sql,mysql,Sql,Mysql,我有一个对数据库的查询,它返回X个结果。我期待返回最多10个结果。有没有一种方法可以在不使用限制0,9的情况下执行此操作?如果必须的话,我会使用LIMIT,但我更愿意使用其他方法来停止搜索,而不是查看所有行,然后只返回前10行。LIMIT语法是返回指定行数的最可靠方法。对于十行,使用: LIMIT 10 使用限制0,9将返回9行,而不是10行。而且,如果从零开始,指定偏移量没有任何好处。如果在查询中没有进行任何排序,那么“限制10”将在前10个匹配行之后停止。但是,一旦您进行排序,那么所有的行

我有一个对数据库的查询,它返回X个结果。我期待返回最多10个结果。有没有一种方法可以在不使用限制0,9的情况下执行此操作?如果必须的话,我会使用LIMIT,但我更愿意使用其他方法来停止搜索,而不是查看所有行,然后只返回前10行。

LIMIT语法是返回指定行数的最可靠方法。对于十行,使用:

LIMIT 10

使用
限制0,9将返回9行,而不是10行。而且,如果从零开始,指定偏移量没有任何好处。

如果在查询中没有进行任何排序,那么“限制10”将在前10个匹配行之后停止。但是,一旦您进行排序,那么所有的行都必须进行处理、排序,然后返回前10行


可以把它看作是“好的,排在队伍前面的10个人可以进来”和“好的,排在队伍里最高的10个人可以进来”之间的区别。首先,你打开门,让10个人进来。第二个问题是,你必须通过整条线路找到10个最高的人。

你正在假设LIMIT在MySQL中的实际实现。在某些情况下,查询计划器可能能够以不进行顺序搜索的方式优化查询。无论如何,我认为你试图在错误的地方进行优化。您是否有性能问题?如果是这样的话,我建议针对具体问题问另一个问题(例如,确切的查询、模式和索引等)。