新聞中心
這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
教您如何進行SQL數(shù)據(jù)分頁
在使用SQL數(shù)據(jù)庫的過程中,如果要用到SQL數(shù)據(jù)分頁,應(yīng)該怎么辦呢?下面就教您SQL數(shù)據(jù)分頁的一個方法,供您參考,希望對您有所幫助。

寧洱ssl適用于網(wǎng)站、小程序/APP、API接口等需要進行數(shù)據(jù)傳輸應(yīng)用場景,ssl證書未來市場廣闊!成為創(chuàng)新互聯(lián)的ssl證書銷售渠道,可以享受市場價格4-6折優(yōu)惠!如果有意向歡迎電話聯(lián)系或者加微信:18980820575(備注:SSL證書合作)期待與您的合作!
思路是根據(jù)頁號取出兩部分數(shù)據(jù),比如取出前90條,然后取出前100條,然后比較取出兩次結(jié)果的差集。在30萬條記錄的情況下,如果只分100頁(結(jié)果有10000條記錄),大約需要1分半鐘。索引建得好的話,1分鐘左右。
- //select * from //這一句是不能修改的了,因為它是從結(jié)果中讀取,所以必須要用*
- //(select top @h_count (@filedlist) from @tableName .....) as big //取出符合條件的上限的記錄
- //where
- //big.guid //這里是關(guān)鍵,根據(jù)主鍵從下限結(jié)果中過濾掉重復的記錄(只留下不同的數(shù)據(jù),也就是求交集)
- //not in
- //(select top @l_count guid from @table .....)//下限
- //order @orderby //原來的格式,這里只保留了orderby之后的,應(yīng)該保留條件之后所有的,包括gruopby什么的
- 函數(shù)類似如此:
- public string MakeSqlPager(string sourceSql,int pageIndex)
- {
- //使用默認頁面大小
- string orderbyStr=sourceSql.Substring(sourceSql.ToLower().IndexOf("order by"));
- int index=sourceSql.ToLower().IndexOf("select");
- string bigRes="("+ sourceSql.Insert(index+6," top "+((pageIndex+1)*_pageSize).ToString()+" ")+") as big";
- string smallRes="("+ sourceSql.Insert(index+6," top "+(pageIndex*_pageSize).ToString()+" ")+")";
- return "select * from "+bigRes+" where big.guid not in "+smallRes+" "+orderbyStr;
- }
這種方法還可以改進,就是第二次取過濾時從第一個的結(jié)果里面過濾。
本文題目:教您如何進行SQL數(shù)據(jù)分頁
文章轉(zhuǎn)載:http://fisionsoft.com.cn/article/cdojohi.html


咨詢
建站咨詢
