我正在尝试重建我的页面,从旧式记录集分页到LIMIT分页。这将阻止我的查询尝试加载100,000行,而实际上并非如此。
我遇到的问题是获取该搜索的所有记录的计数。之前,我通过这样做得到了结果的数量:
recordCount = rsPhotoSearch.RecordCount
但是现在我将查询限制在30,每页显示30条记录,我的'recordCount'只显示30条,而不是应该是100,000条。
那么我怎么能得到该搜索的记录总数,而不经过所有100,000行,对我来说,似乎无视LIMIT方法的使用?我可能会运行一个单独的查询,同样的,只是为了计算记录 - 但这是否实用,因为这也会通过100,000行来计算?
像往常一样感激地收到任何帮助:)
来自迷茫的男人
答案 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
),则可以限制扫描的行数并提高性能。