我的分頁方法效率不高,因爲它會調用相同的查詢兩次,因此會加倍查詢時間。我目前調用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