亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專(zhuān)欄INFORMATION COLUMN

mgo做分頁(yè)的幾種方法

Terry_Tai / 2532人閱讀

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

場(chǎng)景

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

方案 方案一,數(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í)候,當(dāng)數(shù)據(jù)量達(dá)到一定量,sort會(huì)內(nèi)存益處報(bào)錯(cuò)

方案二,數(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)

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

方案三,數(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)

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

結(jié)束語(yǔ)

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

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

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

轉(zhuǎn)載請(qǐng)注明本文地址:http://www.ezyhdfw.cn/yun/19568.html

相關(guān)文章

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

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

    yuanzhanghu 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

閱讀需要支付1元查看
<