对于我的应用程序,我的大多数SQL查询都返回指定的行数。我还想获得尽可能多的结果,即如果我没有设置LIMIT,将返回多少行。
是否有更有效的方法(仅使用SQL?)而不是返回所有结果,获取结果集的大小,然后拼接集合以返回前N行。
答案 0 :(得分:1)
我还想获得尽可能多的结果,即如果我没有设置LIMIT,将返回多少行。
使用:
SELECT COUNT(*)
FROM YOUR_TABLE
...获取YOUR_TABLE中当前存在的行数。
是否有更有效的方法(仅使用SQL?)而不是返回所有结果,获取结果集的大小,然后拼接集合以返回前N行。
仅获取所需的行/信息 获取所有内容意味着大量数据正在通过网络传输,可能根本不会被使用。在这种情况下,数据被缓存 - 这意味着它可能会变得陈旧,因为它不是新鲜的数据库。
这听起来像是分页......
答案 1 :(得分:1)
您可以使用SELECT COUNT(*)
,但这对于大型数据集并不理想
更有效的解决方案是使用SQL_CALC_FOUND_ROWS
和FOUND_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(*)。那是你在找什么?