2012-05-02 29 views
0

問題是一個非常簡單的問題,您是否可以在集合中擁有多個索引。我想你可以,但每次我搜索多個索引時,我都會得到有關複合索引的解釋,而這不是我正在尋找的。mongodb中具有不同定義的多個索引

我想要做的就是確保我可以有兩個簡單的單獨索引。 (我使用PHP,我將使用PHP代碼的格式,但我明白

db.posts.ensureIndex({ my_id1: 1 }, {unique: true, background: true}); 
db.posts.ensureIndex({ my_id2: 1 }, {background: true}); 

我只是會在一次搜索一個索引。

複合索引我不是什麼尋找原因:

  1. 一個指標是唯一的,另一種是不

  2. 我認爲這不會是最快的選項(打開鏈接,瞭解日。我認爲它會變慢。 link

我只是想確保索引能正常工作。

回答

2

您確定可以按照您擁有的方式定義索引。來自MongoDB documentation

有多少個索引?索引通過密鑰進行檢索,包括有序順序檢索,速度非常快。密鑰更新速度更快,因爲MongoDB可以快速找到要更新的文檔。但是,請記住,創建的每個索引都會爲插入和刪除添加一定量的開銷。除了將數據寫入基本集合之外,還必須將鍵添加到B-Tree索引。因此,對於讀取次數遠多於寫入次數的集合,索引是最好的。對於書寫密集的收藏品,在某些情況下,索引可能適得其反。大多數集合都是讀取密集型的,因此在大多數情況下索引是一件好事。

我還建議你看看how Mongo will decide what index to use當涉及到運行一個查詢,這兩個領域。

也看看他們的Indexing Advice and FAQ頁面。它將解釋如only one index per query,selectivity等等。

p.s.來自10gen的這個slideshare deck表明每個集合有40個索引的限制。

+0

謝謝。在例子中,我從來沒有看到兩個索引,一個接一個。 (在同一個腳本中)。我只是想確定。也感謝您的額外信息,它會變得非常有用。 –

+0

感謝有關MongoDB的信息,每個集合可以有40個索引,它現在可能已經改變了。 – The6thSense