国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

mgo做分頁的幾種方法

Terry_Tai / 2455人閱讀

摘要:場景當數(shù)據(jù)兩足夠大的時候,一頁展示不完的時候,我們經(jīng)常會需要分頁的功能。方案三,數(shù)據(jù)比較大,排序需要排序當數(shù)據(jù)量比較大的時候,并且需要排序的時候,可以使用這種情況。

場景

當數(shù)據(jù)兩足夠大的時候,一頁展示不完的時候,我們經(jīng)常會需要分頁的功能。

方案 方案一,數(shù)據(jù)不是很大

需要排序

    s := globalS.Copy()
    c := s.DB(db).C(collection)
    defer s.Close()
    return c.Find(query).Select(selector).Sort(sort).Skip(100).Limit(20).All(result)

這中情況只適用于數(shù)據(jù)量比較小的時候,當數(shù)據(jù)量達到一定量,sort會內(nèi)存益處報錯

方案二,數(shù)據(jù)比較大

不需要排序

    s := globalS.Copy()
    c := s.DB(db).C(collection)
    defer s.Close()
    return c.Find(query).Select(selector).Skip(100).Limit(20).All(result)

當數(shù)據(jù)量比較大的時候,可以使用這種情況。如果需要排序,那就取得返回值后在排序。

方案三,數(shù)據(jù)比較大,排序

需要排序

    var result []interface{}
    s := globalS.Copy()
    c := s.DB(db).C(collection)
    defer s.Close()
    pipeM := []bson.M{
        {"$match": bson.M{"status": "true"}},
        {"$skip": start},
        {"$limit": end},
        {"$sort": bson.M{"height": -1}},
    }
    pipe := c.Pipe(pipeM)
    err = pipe.All(&result)

當數(shù)據(jù)量比較大的時候,并且需要排序的時候,可以使用這種情況。因為在skip,limit和sort同時出現(xiàn)的時候,由于有優(yōu)先級,需要無論順序如何,都是先執(zhí)行sort,在執(zhí)行skip,最后執(zhí)行l(wèi)imit,但是我們使用聚合,也就是mgo里面的pipeline,可以改變執(zhí)行的先后順序。

結(jié)束語

上面的三種情況都不適用大量的數(shù)據(jù),首先是skip的限制,有人建議邊查詢邊排序,我沒有嘗試

如果數(shù)據(jù)量過大,我建議使用分庫分表的方式來完成,這樣加上GO語言的多線程,可以很快的查詢和聚合

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/19568.html

相關(guān)文章

  • 大數(shù)據(jù)分頁方案

    摘要:分頁正反偏移數(shù)據(jù)庫自帶的和的限制條件為我們創(chuàng)建了分頁的查詢方式,但是如果利用不對,性能會出現(xiàn)千倍萬倍差異。這兩條是為查詢最后一頁的翻頁查詢用的。緩存和不精準數(shù)據(jù)量達到一定程度的時候,用戶根本就不關(guān)心精準的總數(shù)沒人關(guān)心差幾個。 軟件開發(fā)中,常用要用到分頁、計算總數(shù),數(shù)據(jù)量超過千萬、上億的時候,往往count 的需要超過 1s 的執(zhí)行時間,甚至 3-5s,對于一個追求性能的前沿團隊來說,這...

    yuanzhanghu 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<