我的分页方法效率不高,因为它会调用相同的查询两次,因此会加倍查询时间。我目前调用1个查询,连同5个表格一起使用XML搜索查询,以允许从ASP.net传递列表。然后,我需要调用完全相同的查询,除了用Count(row)来获取记录数量SQL + ASP.Net高效分页
为例(我已删除的比特,使其更易于阅读)
主查询:
WITH Entries AS (
select row_number() over (order by DateReady desc)
as rownumber, Columns...,
from quote
join geolookup as Pickup on pickup.geoid = quote.pickupAddress
where
quote.Active=1
and //More
)
select * from entries
where Rownumber between (@pageindex - 1) * @pagesize + 1 and @pageIndex * @pageSize
end
统计查询:
select count(rowID)
from quote
join geolookup as Pickup on pickup.geoid = quote.pickupAddress
where
quote.Active=1
and //More
)
为什么你需要tmptable? - 你能不能把计数(*)放在第一个选择中,这样每一行都有计数呢? – michael
不,因为要做一个'COUNT(*)'你必须做一个'GROUP BY'聚合。 – cjk