Запрос на обновление внутри Пакетного обновления занимает много времени - PullRequest
0 голосов
/ 04 апреля 2020
System.out.println("multipleBatchUpdateCheckErroreValues.update starting time------"+ new DateTime());     
multipleBatchUpdateCheckError(
            vSql.toString(),  //sql query
            pPriceMap.toList(), //rows
            50, //batch size
            new ObjectPreparedStatementSetter() {
              public void setValues(Object row, PreparedStatement ps, int rowNo) throws SQLException {
                Price vPrice = (Price) row;
                prepareValues(vPrice, ps, UPDATE);
              }
            });
        }
System.out.println("multipleBatchUpdateCheckErroreValues.update ending time------"
            + new DateTime());

В приведенном выше коде обновление занимает слишком много времени, чтобы завершить sh. Как оптимизировать приведенное ниже время выполнения кода?

SQL Запрос

UPDATE PRICE_T
   SET TO_TIME = ?,
       PRICE_EXCLUDING_TAX = ?,
       PRICE_INCLUDING_TAX = ?,
       REASON = ?,
       PRIORITY_TYPE = ?,
       TRANS_TIME = ?,
       DEL_TIME = ?,
       UPD_TIME = ?
 WHERE CLASS = ?
   and CLASS_TYPE = ?
   and COUNTRY_CODE = ?
   and ITEM_NO = ?
   and ITEM_TYPE = ?
   and CURRENCY_CODE = ?
   and PRICE_TYPE = ?
   and FROM_TIME = ?

Всего строк 10 КБ, столбцов 14, время обработки которых составляет 35 минут.

1 Ответ

0 голосов
/ 04 апреля 2020

После создания индексов во всех 8 столбцах предложения where время выполнения уменьшилось до 1 секунды.

...