Как ускорить время ответа на этот запрос - PullRequest
0 голосов
/ 11 июня 2019

Я получаю последнюю запись даты (одиночную) среди 100k записей.Я хочу, чтобы время ответа на запрос было быстрее.

Я пробовал использовать два решения, упомянутых ниже, причем оба требуют много времени для ответа.

Решение 1:

DetachedCriteria maxDate = DetachedCriteria.forClass(EventData.class);
    maxDate.add(Restrictions.eq("device", device));
    maxDate.setProjection(Projections.max("dateTime"));

Criteria eventDataCreCriteria = this.sessionFactory.getCurrentSession().createCriteria(EventData.class, "e").createAlias("e.device", "d").createAlias("d.deviceList", "dl");

eventDataCreCriteria.add(Restrictions.eq("device", device));
eventDataCreCriteria.add(Property.forName("dateTime").eq(maxDate)); //line 1
eventDataCreCriteria.setMaxResults(1);
EventData eventData = (EventData) eventDataCreCriteria.uniqueResult();

Решение 2:

Criteria eventDataCreCriteria = this.sessionFactory.getCurrentSession().createCriteria(EventData.class, "e").createAlias("e.device", "d").createAlias("d.deviceList", "dl");

eventDataCreCriteria.add(Restrictions.eq("device", device));
eventDataCreCriteria.addOrder(Order.desc("dateTime")); //line 2
eventDataCreCriteria.setMaxResults(1);
EventData eventData = (EventData) eventDataCreCriteria.uniqueResult();

Если я удаляю строки 1 и 2 из обоих решений, тогда он начинает реагировать слишком быстро, но затем не получает последнюю датузаписей.

Мне нужна только одна последняя запись даты с меньшим временем отклика.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...