У меня есть коллекция с 10-мильными рядами без индекса. В этом случае система должна читать целую таблицу?Почему mongoDB занимает меньше времени для выбора, чем выбор времени?
Когда я использую инструкцию eplain, тогда он показывает db.employees.find ({сотни2: {$ lt: 1}}, {}). Explain(); "nscannedObjects": 10000000, "п": 105 Миллис»:.. 6027
Он отлично работает
Но я с помощью Java для обработки запроса Вот код
whereQuery = new BasicDBObject();
whereQuery.put("hundreds2",new BasicDBObject("$lt", rangeQuery));
timer.start();
setupMongoDBReadQuery(arrForRange[posOfArr]);
cursor = coll.find(whereQuery);
timer.stop();
this.selectTime= timer.elapsed();
timer.start();
while (cursor.hasNext())
{
numberOfRows++;
cursor.next();
}
timer.stop();
this.fetchTime= timer.elapsed();
this.totalOfSelAndFetch=this.selectTime+this.fetchTime;
Но после получения результата. Я получил эту информацию.
selTime=2 fetchTime=6350 numRows105 TotalTime6352
selTime=0 fetchTime=6290 numRows471 TotalTime6290
selTime=0 fetchTime=6365 numRows922 TotalTime6365
Зачем выбирать время больше, чем выбирать. В соответствии с моими знаниями, wh ile loop - это просто печать данных. Почему он занимает так много времени для печати и как mongoDB выбирает количество строк с 0 или 2 миллисекундами?
же эксперимент я сделал в MySQL с похож код и результаты
selTime = 6302 fetchTime = 1 numRows105 TotalTime6303
selTime = 6318 fetchTime = 1 numRows471 TotalTime6319
selTime = 6387 fetchTime = 2 numRows922 TotalTime6389
Но в случае, если java отправляет запрос, равный количеству выбранных строк. это то же самое произошло, когда сделал эксперимент. с выбором 150 строк, занимает 5919 мс с системой 4996686 строк, занимает 14297 мс – user35662