[英]Algorithm for optimising compound index search in MongoDb
我有一個集合X ,必須在其上應用過濾器。
篩選器另存為單獨的實體( 集合篩選器 ),並且它保存的唯一數據是字段名稱和應用於該字段名稱的條件
過濾器示例:
名字叫斯蒂芬,年齡在10、20之間
基本上,我需要改進的事實是,過濾器中的每個字段都是在創建過濾器時添加的索引。
唯一匹配的結構是過濾字段上的復合索引。
總之,問題是當我有一個類似的過濾器時:
名字叫斯蒂芬,年齡在10,20歲之間
我在MongoDb中的復合索引將為:{'名稱':1,'年齡':1}
但是,如果我添加另一個過濾器,則可以說:年齡為10,名稱為Adrian,身高在170180之間
復合索引為:{'Age':1,'Name':1,'Height':1}
{'名稱':1,'年齡':1} <> {'年齡':1,'名稱':1,'高度':1}
我該怎么做才能使最后一個索引與第一個索引和另一個索引相適應。
如果我還沒露骨的話,請告訴我。
解決此問題的最干凈的方法是索引交集 ,它目前正在開發中。 這樣,每個標准的索引就足夠了。
同時,我看到兩個選擇:
$in
查詢實際文檔。 有很多工具都使用這種方法,但是這會增加很多開銷,因為您需要針對第二個數據庫進行編碼和管理,使數據保持同步等。 那可能不是最干凈的方法,它的效率在很大程度上取決於查詢的細節,因此可能需要進行一些微調。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.