Мы добавили 15 миллионов записей в orientdb для огромного тестирования производительности запросов данных.
Конфигурация системы: Linux, 2Cpu и 4 ГБ ОЗУ
var X;
for(var i=1;i<15000000;i++)
{
X='insert into customer set id='+i+',name=\'SENTHIL'+i+'\',age='+i;
db.command(X);
}
БД / Коллекция Картинка:
Индексное изображение БД
Где попытаться получить записи, как показано ниже, мы получили медленный ответ
select count(age) from customer where age > 100000 and age < 999999
Запрос выполнен за 7,652 с
select count(age) from customer where age > 1000000 and age < 9999999
Запрос выполнен за 183,465 сек.
explain select count(age) from customer where age > 1000000 and age < 9999999
+ FETCH FROM INDEX customerAge
age > 1000000 and age < 9999999
+ EXTRACT VALUE FROM INDEX ENTRY
filtering clusters [25,26,27,17,16,19,18,21,20,23,22,24,15]
+ FILTER ITEMS BY CLASS
customer
+ CALCULATE PROJECTIONS
age AS _$$$OALIAS$$_1
+ CALCULATE AGGREGATE PROJECTIONS
count(_$$$OALIAS$$_1) AS _$$$OALIAS$$_0
+ GUARANTEE FOR ZERO COUNT
+ CALCULATE PROJECTIONS
_$$$OALIAS$$_0 AS `count(age)`
Как мы можем исправить медленный ответ?