TODO:數據庫優化之分頁-創新互聯
TODO:數據庫優化之分頁
本文的例子是以MongoDB數據庫為準,其它數據庫各位也可以舉一反三進行優化。
在MongoDB中分頁使用
a.skip(n)跳過前n個匹配的文檔;
b.limit(m)返回m個結果,要是匹配的結果不到m個,則返回匹配數據量的結果,m是指定上限數量,而不是下限數量;
c.sort({“name”: 1,”address”:-1}),1表示升序,-1表示降序。
使用skip跳過少量的文檔還可以。但是數據量非常多的話,skip就會變得非常慢,每個數據庫都會有這種情況,所以要盡量避免過多的使用skip。那要怎么做分頁,我們可以利用上次的結果來計算下次的查詢。
1.使用skip的分頁
Page1 = db.user.find({}).limit(100)
Page2 = db.user.find({}).skip(100).limit(100)
Page3 = db.user.find({}).skip(200).limit(100)
2.利用上次的結果來計算下次的查詢,按時間戳(timestamp)排序
獲取第一頁
Page1 = db.user.find({}).sort({“timestamp”: -1}).limit(10)
獲取當前頁面的最后一條記錄的時間戳lasttimestamp,
根據lasttimestamp進行查詢下一頁數據
Nextpage=db.user.find({“timestamp”:{“$gt”:lasttimestamp}}).sort({“timestamp”: -1}).limit(10)
這樣查詢就沒有使用到skip,但是要確保timestamp唯一約束確保文檔中的數據沒有相同的值。
wxgzh:ludong86
另外有需要云服務器可以了解下創新互聯cdcxhl.cn,海內外云服務器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務器、裸金屬服務器、高防服務器、香港服務器、美國服務器、虛擬主機、免備案服務器”等云主機租用服務以及企業上云的綜合解決方案,具有“安全穩定、簡單易用、服務可用性高、性價比高”等特點與優勢,專為企業上云打造定制,能夠滿足用戶豐富、多元化的應用場景需求。
文章名稱:TODO:數據庫優化之分頁-創新互聯
分享URL:http://www.xueling.net.cn/article/dgspip.html