1. 程式人生 > >海量分頁的簡單分析

海量分頁的簡單分析

elk mic als emc usb won tm4 pop iap

此文僅個人理解,不到之處望指出

提出:easyui的datagrid組件有海量分頁的內容,通過查詢數據庫的所有數據在表格進行分頁瀏覽,因為數據量多,也叫海量分頁,

網上實現方式有很多,這裏用存儲過程.

搭建: 使用sql server2012

測試表的屬性:

技術分享

插入數據:

declare @x int
set @x = 1
while @x <= 50000 --插入5萬條數據
begin
insert into TBInfors
select ‘第‘+CONVERT(varchar(20),@x)+‘條數據標題‘,
‘第‘+CONVERT(varchar(20),@x)+‘個作者‘,GETDATE()
set @[email protected]

/* */+1
end

分頁實現:

declare @pagesize int,@pageindex int;

set @pagesize = 10;

set @pageindex = 3;

select top (@pagesize) * from TBInfors

where id not in

(

select top (@pagesize*(@pageindex-1)) id from TBInfors

order by id

)

order by id

分頁分析:

分頁所具備的條件參數

@pageSize 頁面顯示的數據量,也就是多少行

@pageIndex 頁面的索引,顯示第幾頁的數據

裏面的查詢為什麽要-1,其實大有講究

假設你要查詢第二頁的數據,顯示的是11 – 20,首先你得過濾到前面10行的數據,

裏面查詢到10*(2-1) = 10行的ID,然後根據嵌套查詢,查詢不是這10行ID的

其他(id not in)的全部數據(表的所有數據),最後根據你需要在頁面顯示多少行數據,

用top過濾出來,這裏,我們就可以抽象出規律出來,索引減1乘以顯示數據量,是為了找到當前索引前面的數據量,

通過外面查詢的id not in條件過濾到前面的數據,相對的,它會包含所有的數據,這個時候再用top裁剪需要顯示多少行數據.

海量分頁的簡單分析