2012-03-23 110 views
2

我有一个包含150万个文档的集合。我正在使用PHP计数:MongoDB计数很慢

$db->some->ensureIndex(array("sometext" => 1)); 
$db->some->ensureIndex(array("datsbla" => 1)); 
$arr["sometext"] = $string; 
$arr["datsbla"] = array('$gte' => $some, '$lte' => $thing); 
$count = $db->some->count($arr); 

我打开了剖析器,每个计数就像4500毫秒。我在页面中有20个计数器,所以它使我的网页非常慢。

我该怎么做才能让它更快(< 100毫秒)?是否有可能使用MongoDB?

谢谢。

回答

2

您有两个单独的索引 - 查询一次只能使用1个索引,因此您没有充分利用索引。尝试在两个领域的复合指数,你应该看到一个重大的改善。

+1

这是最重要的问题。你需要一个索引{sometext:1,datsbla:1}来使这个更快。如果你真的不能只在最高基数场上做一个索引,但不能同时做两个索引。 +1 – 2012-03-23 14:58:27