簡體   English   中英

mongodb復合索引或單個索引

[英]mongodb compound or individual indexes

我需要一些有關如何正確設置w / mongodb索引的建議。

假設我的數據收集是這樣的:

玩家們

 - age
 - scores
 - fouls
 - yellow cards
 - red cards
 - offsides

我的問題是我的潛在查詢可以涵蓋所有索引組合,例如:

Get players that age < 30 and yellow card > 3
Get players that age < 30 and yellow card > 3 and red_cards >6
Get players that age < 30 and red_cards card > 3 and scores > 2
Get players that scores < 30 and yellow card > 3 and fouls < 6 and red_cards >2
Get players that scores < 30 and yellow card > 3 and fouls < 6 and red_cards >2 and age > 25

在這種情況下分配索引的最佳方法是什么? 如果我的集合中有6個字段(如示例中所示),我是否需要36個索引? 還是每個索引只有一個字段會是更好的選擇?

對這個問題的答案取決於您的集合大小,查詢率,不同類型查詢的分布(具有某些參數集的查詢比其他查詢具有更高的查詢率)等。

如果集合的大小少於100k( 例如 )文檔,則可以確信所有查詢都將是快速的 ,即使它們不使用索引並且始終進行順序掃描。

另一方面,如果每秒有1000個這樣的查詢,它將無法按預期運行,在這種情況下,您必須使用profiler( system.profile )確定不同類型的查詢的分布。 當您獲得此分布時,很明顯,應該創建哪些索引。

您的主要目標應該是,減少為滿足查詢而讀取的數據量(索引+文檔)。

最后,您可以通過創建MongoDB ReplicaSet來提高讀取吞吐量。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM