Производительность запроса на обновление БД - PullRequest
0 голосов
/ 24 марта 2020

У меня есть запрос на обновление БД, я хочу обновить offer_end_dt до определенной даты

UPDATE offer SET offer_end_dt = '2020-10-30 00:00:00',
                 last_update_user_nm = 'testUser',
                 last_update_tmst = now()
        WHERE offer_end_dt LIKE '2020-05-31%'; 

В вышеупомянутом запросе я использовал LIKE, потому что я не уверен насчет времени.

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

Есть ли способ повысить производительность этого запроса? Могу ли я использовать USE INDEX здесь? Как?

Я использую MariaDb.

Ответы [ 2 ]

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

Иметь INDEX(offer_end_dt) и делать

WHERE offer_end_dt >= '2020-05-31'
  AND offer_end_dt  < '2020-05-31' + INTERVAL 1 DAY

(С этим шаблоном не нужно беспокоиться ни о конце месяца, ни о году, ни о високосном году.)

0 голосов
/ 24 марта 2020

Предполагая, что offer_end является datetime (что и должно быть), вы должны сделать сравнение дат:

WHERE offer_end_dt >= '2020-05-31' and offer_end_dt < '2020-06-01'; 
...