溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

寫給MongoDB開發者的50條建議Tip25

發布時間:2020-06-13 22:41:35 來源:網絡 閱讀:908 作者:virusswb 欄目:MongoDB數據庫

本系列文章翻譯自《50 Tips and Tricks for MongoDB Developers》,暫時沒有找到中文版,反正自己最近也在深入學習mongodb,所以正好拿來翻譯一下。一方面加強自己學習的效果,另一方面讓大家也一起來體驗一下需要我們這些mongodb使用者需要注意的地方。

首先聲明自己的英文水平不是太高,加之有些英文翻譯成中文也找不到合適的詞來表達,所以在文章中可能會出現英文原詞,或者說有些地方的翻譯會有些生 硬,也就是說會出現直譯的地方。翻譯該書的主要目的是為大家學習探討用的,如果有翻譯不精準的地方,或者說有更加精準的翻譯,還請大家指出,我會及時的更正的,在此先謝過各位了。

Tip#25.Use compound indexes to make multiple queries fast

使用復合索引加速查詢

如果有可能的話,創建能被多個查詢使用的復合索引。也不總是有可能,但是如果你的多個查詢都是相似的條件,還是很必要的。

任何查詢,主要匹配了索引的前綴,就可以使用該索引。因此,你建立的索引應該是包含被多個查詢共享的,最大數量的條件。

假設你的應用會執行下面的查詢。

 

  1. collection.find({"x":criteria,"y":criteria,"z":criteria}) 
  2.  
  3. collection.find({"z":criteria,"y":criteria,"w":criteria}) 
  4.  
  5. collection.find({"y":criteria,"w":criteria}) 

 

如你所見,y是唯一一個所有查詢都用到的字段,因此y字段是一個很好的候選者。z字段在前兩個查詢中出現,w字段在后兩個查詢中出現,兩者之一將會作為下一個候選者。

我們想要盡可能的命中建立的索引。如果可以確定第一個查詢很重要,或者比其他兩個頻繁,我們建立的索引就要傾向第一個查詢。假設第一個查詢的執行次數是其他兩個的上千倍,我們就可以建立下面的索引。

 

  1. collection.ensureIndex({"y":1,"z":1,"x":1}) 

第一個查詢得到了很高的優化,另外兩個的部分查詢可以使用這個索引。

如果所有的查詢運行次數均等,可以建立下面的索引。

 

  1. collection.ensureIndex({"y":1,"w":1,"z":1}) 

因為條件中都包含有y,因此三個查詢都可以使用這個索引,后面兩個可以使用w,中間的可以完全的是偶那個這個索引。

你可以通過下面的命令查看一個查詢的索引使用情況。

 

  1. collection.find(criteria).explain()
向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女