[英]Mongodb taking too much time to find the record
我在本地主機上有mongodb,在數據庫中我有9000萬條記錄。 當我通過db.emails.find({"name":"example"})
搜索任何記錄時,獲取結果的時間太長。 有什么辦法可以提高mongodb的速度嗎?
為name
字段創建索引
db.emails.createIndex( { name: 1} )
如果您沒有字段索引,則mongodb必須在執行查詢時執行集合掃描 ,即掃描集合中的每個文檔以檢查與查詢匹配的name
字段的值。 另一方面,該索引僅存儲可以快速檢查的name
字段的有序值。
索引鍵有限制。 索引條目的總大小必須小於1024個字節。 但是,如果要搜索有關字符串內容的查詢,可以使用文本索引:
db.emails.createIndex( { name: "text"} )
另外,如果要搜索完全匹配,則可以使用哈希索引:
db.emails.createIndex( { name: "hashed" })
通常,為了加速mongodb查詢,可以做的是准備一個組合索引。
在您的情況下,由於它是電子郵件地址,因此我建議您將郵件作為id並使用不區分大小寫的正則表達式執行搜索。 例如,如果您希望所有人都擁有gmail帳戶,則可以執行如下搜索
db.users.find({_id:/@gmail.com/})
我相信這將大大加快您的代碼
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.