【发布时间】:2014-12-05 01:26:08
【问题描述】:
场景
我有 Mongo 集合 Items,其中包含动态项目对象。目前我有超过 300 万条记录。我在 MongoSharp 中使用 C#,但我认为这与我的问题无关。
这是一个示例 Item(它的字段远不止 3 个):
{
_id : "1234567890",
Code : 888596937,
RefNumber : "GHTZKL",
...
}
AFAIK 使用 TextSearch 毫无意义,因为它不是真正的单词,只是一些代码,所以它不会给我任何有益的东西。我也无法将它们全部索引,从那时起我将不得不索引每个字段。
问题
现在,当我过滤数据时,大约需要 1-3 秒(在 ssd 上)。有什么方法可以让它更快地过滤我的项目或尽可能快地过滤我的项目?
【问题讨论】:
-
这很简单:没有索引,计算机将不得不扫描每一项。如果有 2GB 的数据,即使它已经全部在 RAM 中,您的 CPU 也必须加载、检查并记住每个项目的结果,这需要时间。要么确定可以被索引的常见查询条件,并通过索引将候选集减少一到两个数量级,要么使用多键来模拟大量索引,或者使用专门的搜索数据库。无论如何,你必须从 O(n) 到 O(log n)。
标签: mongodb