获取最大可能结果集的大小

时间:2010-05-09 17:58:29

标签: php sql

对于我的应用程序,我的大多数SQL查询都返回指定的行数。我还想获得尽可能多的结果,即如果我没有设置LIMIT,将返回多少行。

是否有更有效的方法(仅使用SQL?)而不是返回所有结果,获取结果集的大小,然后拼接集合以返回前N行。

3 个答案:

答案 0 :(得分:1)

  

我还想获得尽可能多的结果,即如果我没有设置LIMIT,将返回多少行。

使用:

SELECT COUNT(*)
  FROM YOUR_TABLE

...获取YOUR_TABLE中当前存在的行数。

  

是否有更有效的方法(仅使用SQL?)而不是返回所有结果,获取结果集的大小,然后拼接集合以返回前N行。

仅获取所需的行/信息 获取所有内容意味着大量数据正在通过网络传输,可能根本不会被使用。在这种情况下,数据被缓存 - 这意味着它可能会变得陈旧,因为它不是新鲜的数据库。

这听起来像是分页......

答案 1 :(得分:1)

您可以使用SELECT COUNT(*),但这对于大型数据集并不理想 更有效的解决方案是使用SQL_CALC_FOUND_ROWSFOUND_ROWS()http://dev.mysql.com/doc/refman/5.0/en/information-functions.html#function_found-rows

首先查询:

SELECT SQL_CALC_FOUND_ROWS id, name, etc FROM table LIMIT 10;

第二次查询:

SELECT FOUND_ROWS();

您仍然需要两个查询,但运行主查询一次,节省资源。

答案 2 :(得分:0)

要获得指定的行数,可以使用select count(*)。那是你在找什么?