【发布时间】:2011-12-25 13:41:55
【问题描述】:
解决了。只需将 db.test.ensureIndex(['name']) => 更改为 db.test.ensureIndex({'name':1});
我今天正在测试 MongoDB。我有 100 000 个文档的测试集合。每个文档都有这样的结构 {_id:123123, name: 'foo123123'}
用 PHP 编写的测试代码
set_time_limit(0);
ini_set('display_errors', 1);
$mongo = new Mongo("mongodb://127.0.0.1:27017");
$db = $mongo->test;
$collection = $db->test;
$start = microtime(true);
for($i=0; $i<10000; $i++){
$obj = $collection->findOne(array('name'=>'foo'.$i));
}
$end = microtime(true);
var_dump($end-$start);
在名称字段上没有索引的第一次测试是 21 秒 比我添加索引
db.test.ensureIndex(['name']);
db.test.getIndexes(); [ { “v”:1, “钥匙” : { “_id”:1 }, “ns”:“test.test”, “名称”:“id” }, { “v”:1, “钥匙” : [ “姓名” ], “ns”:“test.test”, “名称”:“0_” } ]
然后重复测试。又得到了 21 秒。为什么 mongo 在我的情况下不使用索引?
【问题讨论】:
标签: mongodb indexing database-design database