av激情亚洲男人的天堂国语,日韩欧美精品一中文字幕,无码av一区二区三区无码,国产又色又爽又刺激的a片,国产又色又爽又刺激的a片

sqlserver分頁的兩種方法比較

在sql server數(shù)據(jù)庫中,如果一個查詢結果數(shù)據(jù)量比較大,就需要在查詢的時候分頁,每次只返回其中一頁。下面就將為您講解比較sql server分頁的兩種方法,如果您對sql server分頁感興趣的話,不妨一看。

sql server分頁***種方法:
思路是根據(jù)頁號取出兩部分數(shù)據(jù),比如取出前90條,然后取出前100條,然后比較取出兩次結果的差集。

在30萬條記錄的情況下,如果只分100頁(結果有10000條記錄),大約需要1分半鐘。索引建得好的話,1分鐘左右。

//select * from //這一句是不能修改的了,因為它是從結果中讀取,所以必須要用*
//(select top @h_count (@filedlist) from @tableName .....) as big //取出符合條件的上限的記錄
//where
//big.guid   //這里是關鍵,根據(jù)主鍵從下限結果中過濾掉重復的記錄(只留下不同的數(shù)據(jù),也就是求交集)
//not in
//(select top @l_count guid from @table .....)//下限
//order @orderby  //原來的格式,這里只保留了orderby之后的,應該保留條件之后所有的,包括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;
  }

這種方法還可以改進,就是第二次取過濾時從***個的結果里面過濾。

sql server分頁第二種方法:
掐頭去尾,程序還沒寫
SELECT * FROM
(
  SELECT ***00 * FROM
  (
    SELECT ***00000 * FROM pagetest ORDER BY regt ASC
   ) as a
  ORDER BY regt desc
) as b
 ORDER BY regt ASC

測試了一下,大約用時間29秒。

比較:
***種方法的效率很低,猜測是因為多次需要循環(huán)比較,時間復雜度要高一個等級。比如,這種方法的響應時間和所取得的頁號有很大關系。
第二種方法還是可以接受的,和頁號無關,但是也需要兩次比較。


分享名稱:sqlserver分頁的兩種方法比較
轉載注明:http://uogjgqi.cn/article/dhgjopg.html
掃二維碼與項目經理溝通

我們在微信上24小時期待你的聲音

解答本文疑問/技術咨詢/運營咨詢/技術建議/互聯(lián)網交流