SQL LIMIT VS循环限制

时间:2014-06-20 00:40:31

标签: php sql count while-loop limit

我正在浏览Stack Overflow试图找到如何使用while循环限制SQL查询,我遇到了这段代码。

$count = 0;

while ($count < 4 && $info = mysql_fetch_assoc($result)) {
    //stuff

    $count++;
}

问题1:此代码与使用SQL LIMIT子句有什么区别?

问题2:为什么有人想要使用此代码,而不是使用LIMIT

2 个答案:

答案 0 :(得分:1)

  1. 使用此代码,MySQL服务器会将所有结果发送到客户端,但客户端会忽略第4行之后的所有内容。因此,服务器必须做更多工作,并且将在客户端和服务器之间使用更多带宽。

  2. 他们可能希望使用mysql_num_rows()来查找已选择的总行数,即使他们只想显示第一行。但是,MySQL提供了一种方法来实现{{1您可以将LIMIT选项放在SQL_CALC_FOUND_ROWS子句中,然后使用SELECT来获取总行数。所以没有充分的理由,除非他们不了解这个功能。

答案 1 :(得分:0)

每个@Barmar都说是对的。跟随这样的代码会导致很多问题,因为结果集开始增长。让数据库尽其所能,让它提供您想要/需要的结果限制。试想一下当你在命令行客户端做一个没有LIMIT子句的SELECT时会发生什么,那里有成千上万行...它只是继续下去。

还有一件事,我不建议使用mysql_num_rows()作为其弃用的函数。不妨与mysqli或PDO一起去。