Я работаю над симуляцией.
В этой симуляции движения агентов и движение с координатами и временным шагом записываются в базу данных sqlite.
Когда симуляция завершенаМне нужно отобразить положение агентов в определенное время.Для этого я использую запрос типа
SELECT x,y,z,t from movement where t <= ?1 and id = ?2;
и беру только запись с max(t)
.Это работает нормально, но очень медленно.
Мне нужно ускорить его, и я подумал, что могу изменить структуру базы данных.Но я не могу вставить запись позиции для каждого агента, потому что БД будет слишком сильно расти.
То же самое для добавления записи "последней действительной позиции" агентов на каждом временном шаге.
Итак, какие у меня есть другие варианты?
Спасибо
ОБНОВЛЕНИЕ: Что касается проблемы, то в таблице Movements
есть только несколько полей для позиции (x,y INTEGERS) время (t INTEGER) и идентификатор агента (целое число).Количество записей: количество шагов составляет до 50 000, количество агентов может достигать 10 000, а перемещение может происходить с частотой 1/10.Таким образом, в большой симуляции у нас может быть около 5000 движений для 10.000 агентов = 5 миллионов записей для движений.