Как сделать запрос гибернации быстрее - PullRequest
0 голосов
/ 22 ноября 2018

В настоящее время я работаю над задачей повышения производительности действия, и самая медленная часть кода - это запрос гибернации:

.createQuery( "SELECT distinct p FROM CSParcel p " +
                              " WHERE p.bag.destination.loop.line.changeover.barcode = :barcode AND p.created > :limit " +
                              " AND (p.bag.destination.loop.courierLoop.id = :courierId OR p.bag.destination.loop.line.courier.id = :courierId)" +
                              " AND p.latestAction.actionType <> :doruceni" + " AND p.id NOT IN " +
                              "(SELECT pa.parcel.id " + "   FROM CSParcelAction pa " +
                              " WHERE pa.actionType = :predani AND pa.courier.id = :courierId AND pa.timestamp > :limit" +
                              ")", CSParcel.class )
                .setParameter( "barcode", changeoverBarcode.toUpperCase() )
                .setParameter( "limit", Time.setTime( 0, 0, 0, cal.getTime() ) )
                .setParameter( "courierId", courierId )
                .setParameter( "predani", CSParcelActionType.CHANGEOVER )
                .setParameter( "doruceni", CSParcelActionType.DELIVERY )
                .getResultList();

Есть ли способы заставить его работать быстрее?

Спасибо за каждое предложение.

1 Ответ

0 голосов
/ 22 ноября 2018

Вы можете отслеживать с помощью некоторых инструментов, и вы увидите, как ведут себя запросы, обычно достаточно добавить некоторые индексы там, где это необходимо, если у ваших баз данных уже есть индексы, вы можете сделать какое-то обслуживание для таблиц, которые вы используете.Вот некоторая информация

введите описание ссылки здесь

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