Задать вопрос
@gimade

MongoDB быстрая база? Почему у меня все не так радужно?

Итак! Установил MongoDB. Прежде чем рваться в бой и добавлять туда реальные данные, решил немного поиграть с базой и каково было мое удивление, когда запрос на выборку занял аж 4 секунды при том, что там всего 3кк(миллиона) тестовых маленьких документов. Может быть я что-то не так делаю? Собственно вопрос очевиден. Как добиться нормальной скорости выборки данных? Ниже привожу код и данные с которыми тестировал.

$connection = new MongoClient('192.168.1.102:27017');
$db = $connection->mongo;
$collection = $db->user;
$i = 0;
$this->timer_start();
while($i < 3000000){
$doc = array(
"user_id"=>$i,
"user_name"=>"john_smith",
"first_name"=>"John",
"last_name"=>"Smith",
"phone"=>array(
	"+48576938575773732",
	"+23423429384239489",
	),
);
$i++;
$collection->insert($doc);
}
echo "Insert in database: ".$this->timer_stop()."<hr>";

$filter = array("user_id"=>999999);
$this->timer_start();
$docs = $collection->find($filter);
echo $docs->count()."<hr>";
print_r($docs->getNext());
echo "<hr>";
echo "Search in database: ".$this->timer_stop()."<hr>"; //4,0992350578308
  • Вопрос задан
  • 510 просмотров
Подписаться 2 Оценить 17 комментариев
Решения вопроса 1
longclaps
@longclaps
Вам подсказывают, что в монге есть индексы. Один из них даже генерится автоматом - по полю "_id". Дропните эту базу, создайте такую же, но с заменой "user_id" -> "_id" (инициализация этого поля позволительна, модификация - нет), вам должно понравиться.
Ну и почитайте про индексы - что я вам буду пересказывать )
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы