在sql server資料庫中,如果乙個查詢結果資料量比較大,就需要在查詢的時候分頁,每次只返回其中一頁。下面就將為您講解比較sql server分頁的兩種方法,如果您對sql server分頁感興趣的話,不妨一看。
sql server分頁第一種方法:思路是根據頁號取出兩部分資料,比如取出前90條,然後取出前100條,然後比較取出兩次結果的差集。
在30萬條記錄的情況下,如果只分100頁(結果有10000條記錄),大約需要1分半鐘。索引建得好的話,1分鐘左右。
//select * from //這一句是不能修改的了,因為它是從結果中讀取,所以必須要用* //(select top @h_count (@filedlist) from @tablename .....) as big //取出符合條件的上限的記錄 //where
//這裡是關鍵,根據主鍵從下限結果中過濾掉重複的記錄(只留下不同的資料,也就是求交集) //not in
//(select top @l_count guid from @table .....)//下限 //order @orderby //原來的格式,這裡只保留了orderby之後的,應該保留條件之後所有的,包括gruopby什麼的
函式類似如此: public string makesqlpager(string sourcesql,int pageindex)
這種方法還可以改進,就是第二次取過濾時從第乙個的結果裡面過濾。
sql server分頁第二種方法:掐頭去尾,程式還沒寫 select * from ( select top 100 * from ( select top 100000 * from pagetest order by regt asc ) as a order by regt desc ) as b order by regt asc
測試了一下,大約用時間29秒。
比較: 第一種方法的效率很低,猜測是因為多次需要迴圈比較,時間複雜度要高乙個等級。比如,這種方法的響應時間和所取得的頁號有很大關係。 第二種方法還是可以接受的,和頁號無關,但是也需要兩次比較。
SQL SERVER兩種分頁的儲存過程介紹
由於現在很多的企業招聘的筆試都會讓來招聘的寫乙個分頁的儲存過程,有的企業甚至要求應聘者用兩種方式實現分頁,如果沒有在實際專案中使用過分頁,那麼很多的應聘者都會出現一定的問題,下面介紹兩種分頁的方法。一 以學生表為例,在資料庫中有乙個student表,欄位有 studentno,loginpwd,st...
SQL SERVER 通用分頁儲存過程,兩種用法
從sqlserver 2005開始,提供了row number 函式,利用函式生成的index來處理分頁,按照正常的邏輯思維都是傳pageindex和pagesize來完成分頁,昨天前端和我溝通,他們使用jquery.datatable.js外掛程式,而且經過了公司底層的封裝,pageindex需要...
sqlserver分頁的兩種寫法分別介紹
第一種是最傳統的寫法,用儲存過程中的變數作為分頁的乘數 複製 如下 c sharifyaarp view plaincopyprint?create proc p paged1 pagesize int,currentpage int as select top pagesize from stud...