MySQL / ASP分页,COUNT与LIMIT

时间:2011-09-19 17:31:00

标签: mysql sql database asp-classic

我正在尝试重建我的页面,从旧式记录集分页到LIMIT分页。这将阻止我的查询尝试加载100,000行,而实际上并非如此。

我遇到的问题是获取该搜索的所有记录的计数。之前,我通过这样做得到了结果的数量:

recordCount = rsPhotoSearch.RecordCount

但是现在我将查询限制在30,每页显示30条记录,我的'recordCount'只显示30条,而不是应该是100,000条。

那么我怎么能得到该搜索的记录总数,而不经过所有100,000行,对我来说,似乎无视LIMIT方法的使用?我可能会运行一个单独的查询,同样的,只是为了计算记录 - 但这是否实用,因为这也会通过100,000行来计算?

像往常一样感激地收到任何帮助:)

来自迷茫的男人

3 个答案:

答案 0 :(得分:4)

你好。使用SQL_CALC_FOUND_ROWS创建查询,然后通过FOUND_ROWS()函数获取 我的意思是:

Set rsPhotoSearch = _
conn_Object.Execute("Select SQL_CALC_FOUND_ROWS * FROM table LIMIT offSet, rowCount")
Dim lngTotalRecords
lngTotalRecords = conn_Object.Execute("Select Found_Rows();")(0).Value
Response.Write "Total Records : "& lngTotalRecords 
'Loop starts
'etc

答案 1 :(得分:2)

您不需要获取所有行。只需计算一切:

select count(*)
from (
    <whatever is your main query goes here, without LIMIT>
)

答案 2 :(得分:0)

你完全正确,你仍然需要扫描索引来计算行数

我会质疑显示记录数量的有用程度如何?

如果您自己计算记录数(而不是使用SQL_CALC_FOUND_ROWS),则可以限制扫描的行数并提高性能。