Php 如果字段值不可用,mongodb中的响应时间太长
我在mongodb集合/表中插入了记录。如果我传递集合中可用的数据(如StoreId=1),一切正常 问题:如果我搜索集合中不可用的数据,如StoreId=3,则响应时间太长,为什么????我如何简化这个问题 插入数据:Php 如果字段值不可用,mongodb中的响应时间太长,php,mongodb,Php,Mongodb,我在mongodb集合/表中插入了记录。如果我传递集合中可用的数据(如StoreId=1),一切正常 问题:如果我搜索集合中不可用的数据,如StoreId=3,则响应时间太长,为什么????我如何简化这个问题 插入数据: $data = array(); $data[] = array("StoreId" => "1","StoreName" => "abc"); $data[] = array("StoreId" => "2","StoreName" => "xyz")
$data = array();
$data[] = array("StoreId" => "1","StoreName" => "abc");
$data[] = array("StoreId" => "2","StoreName" => "xyz");
$db->test->insertMany($data);
$arrFind = array(
'$and' => array(
array(
'StoreId' => "1"
),
array(
'StoreName' => array(
'$regex' => '^ab',
'$options' => 'i'
)
)
)
);
$projection = array("_id" => false);
$result = $db->test->find($arrFind,['limit'=>$data['Count'], 'projection' => $projection ]);
$array1 = iterator_to_array($result, false);
echo "<pre>";
print_r($array1);
db.test.getIndexKeys();
获取记录:
$data = array();
$data[] = array("StoreId" => "1","StoreName" => "abc");
$data[] = array("StoreId" => "2","StoreName" => "xyz");
$db->test->insertMany($data);
$arrFind = array(
'$and' => array(
array(
'StoreId' => "1"
),
array(
'StoreName' => array(
'$regex' => '^ab',
'$options' => 'i'
)
)
)
);
$projection = array("_id" => false);
$result = $db->test->find($arrFind,['limit'=>$data['Count'], 'projection' => $projection ]);
$array1 = iterator_to_array($result, false);
echo "<pre>";
print_r($array1);
db.test.getIndexKeys();
解释:
$data = array();
$data[] = array("StoreId" => "1","StoreName" => "abc");
$data[] = array("StoreId" => "2","StoreName" => "xyz");
$db->test->insertMany($data);
$arrFind = array(
'$and' => array(
array(
'StoreId' => "1"
),
array(
'StoreName' => array(
'$regex' => '^ab',
'$options' => 'i'
)
)
)
);
$projection = array("_id" => false);
$result = $db->test->find($arrFind,['limit'=>$data['Count'], 'projection' => $projection ]);
$array1 = iterator_to_array($result, false);
echo "<pre>";
print_r($array1);
db.test.getIndexKeys();
因为您没有任何可用于此查询的索引,所以MongoDB需要检查集合中的每个文档。在大型集合上,集合扫描(“COLLSCAN”)相当慢。您需要从
StoreId
元素创建索引。因为您没有任何可用于此查询的索引,所以MongoDB需要检查集合中的每个文档。在大型集合上,集合扫描(“COLLSCAN”)相当慢。您需要从StoreId
元素创建索引。您好,看看您的问题,它检查了大约6816823条记录,似乎还没有创建二级索引
您需要在“StoreId”上创建索引以减少查找
您可以使用以下命令检查为集合创建的所有索引
db.test.createIndex( { StoreId: 1 } );
要创建索引,可以使用以下命令
在集合上创建索引后,请尝试运行查询,查询速度应该很快
更多信息
您好,看看您的问题,它检查了大约6816823条记录,似乎还没有创建二级索引 您需要在“StoreId”上创建索引以减少查找 您可以使用以下命令检查为集合创建的所有索引
db.test.createIndex( { StoreId: 1 } );
要创建索引,可以使用以下命令
在集合上创建索引后,请尝试运行查询,查询速度应该很快
更多信息