亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

mongodb查詢分頁優(yōu)化

系統(tǒng) 1986 0

要求不用skip

前提:1.時間倒序排列(自己現(xiàn)在的項目中也是按照時間倒序排列的)
????? 2.每頁顯示10條數(shù)據(jù)

int limit = 10;//剛開始點擊查詢的時候設(shè)置十條
查詢形式為 db.find(query).sort(time,-1).limit(limit)方式

注:query是查詢條件,其中包括了時間段的條件,例如 a=<time<=b的限制

1)記錄每一頁的第一條數(shù)據(jù)的時間firstTime
2)記錄每一頁最后一條數(shù)據(jù)的時間lastTime

?? ?
??? 在查詢之前判斷用戶是點擊下一頁還是上一頁,在這里用clickPrePage的值是否為空來判斷是否點擊上一頁
同理用clickNextPage的值是否為空來判斷是否點擊下一頁
?? ?
??? //邏輯代碼如下? ?
??? if(notEmpty(clickPrePage){//點擊上一頁
?????? limit = clickPrePage*10;
?????? 查詢條件的時間條件設(shè)置為>=firstTime??? ?
??? }//end if
?? ?
??? if(notEmpty(clickNextPage){//點擊下一頁
??????? limit = clickNextPage * 10;
??????? 查詢條件的時間條件設(shè)置為<=lastTime
??? }//end if
?

代碼說明:
?? 比如當前頁是第5頁,當點擊第4頁的時候,由于每頁要顯示十條,所以按照上面的邏輯limit=40,也就是查詢40條,取后十條記錄顯示即可
?? 同理,當點擊第6頁的時候。此時limit=60,查詢60條,取最后十條顯示
?? 當然,當用戶輸入跳轉(zhuǎn)的時候同樣的邏輯,比如當前頁還是取第五頁為例,此時用戶要跳轉(zhuǎn)到第100頁,那么此時limit=1000,取最后10條顯示即可

由于每頁顯示10條數(shù)據(jù),需要從查詢的結(jié)果中獲取10條,所以while循環(huán)可以這么寫

int index=0;

while(cursor.hasNext()&index<limit){//確保循環(huán)十次,讓集合list的size=10,把list傳到前臺,來達到每頁顯示十條數(shù)據(jù)的目的

??? int i = limit-index;
?? ?
?? //查詢結(jié)果放入集合list中,要取查詢結(jié)果的后10條
?? if(i<10){? ?
? ?
???? //記錄每頁第一條數(shù)據(jù)的時間
????? if(i==9){
??????? fistTime = db.get("time").toString();
????? }
???? ?
????? //記錄每頁最后一條數(shù)據(jù)的時間
????? if(i==0){?? ?
????????? lastTime = db.get("time").toString();
????? }
????? list.add(cursor.hasNext().next());
?? }//end if
? ?
??? index++; ?
?? ?
}//end while

缺點:
? 在跨頁跳轉(zhuǎn)時由于不能確定要跳轉(zhuǎn)的頁面的前一頁的lastTime,所以根據(jù)前面設(shè)定的limit,需要查詢一些不必要的數(shù)據(jù),? 然后從這些數(shù)據(jù)取后10條也就是需要的數(shù)據(jù)來顯示,效率上仍有些欠缺。
? ? 比如:當前頁為currentPage,記錄此頁的lastTime假設(shè)為a,要跳轉(zhuǎn)到currentPage+100頁,需要根據(jù)currentPage的lastTime來作為查詢條件,而沒法獲取currengPage+99頁的數(shù)據(jù)的lastTime來進一步縮小查詢范圍.
?

未完待續(xù)

以上方法有不當之處,歡迎批評指正,如果好的方法,希望能交流一下

?

mongodb查詢分頁優(yōu)化


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯(lián)系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發(fā)表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 日韩欧美精品有码在线观看 | 四虎影视地址 | 狠久久| 日日撸| 91热视频在线 | 狠狠综合久久久久综合小说网 | 5060午夜一级毛片 | 成人a视频在线观看 | 精品久久中文网址 | 成人免费牛牛在线视频 | 久草新在线观看 | 在线免费观看a视频 | 大乳孕妇一级毛片 | 猫咪伊人网| 亚洲国产一区二区三区在线观看 | 在线播放heyzo北条麻妃 | 成人a毛片在线看免费全部播放 | 日本一级毛片片在线播放 | 国产成人久久久精品一区二区三区 | 欧美日本一区亚洲欧美一区 | 国产一级大片免费看 | 久久美女精品国产精品亚洲 | 7777成年大片免费播放器 | 99久久精品国产一区二区三区 | 久久影院一区 | 成人aaaa | 亚洲国产精品久久久天堂 | 国产精品午夜免费福利视频 | 国产欧美日韩精品a在线观看 | 69午夜| 久久黄色精品视频 | 一级毛片视频 | 色老头成人免费视频天天综合 | 国外成人免费视频 | 女人国产香蕉久久精品 | 国产久爱青草视频在线观看 | 香蕉视频在线观看网站 | 久久综合色视频 | 亚洲精品乱码中文字幕无线 | 国产免费播放一区二区三区 | 99久久精品男女性高爱 |