Проблема в том, что ваш предикат фильтрации:
date(dt.transaction_date)=date_sub(curdate(),interval 1 day)
Страдает синдромом «выражения на левой стороне знака равенства». Это мешает оптимизатору использовать индекс. Измените это условие на:
dt.transaction_date >= date_sub(curdate(),interval 1 day) and
dt.transaction_date < curdate()
Таким образом, оптимизатор может эффективно использовать индекс, если он присутствует. Поэтому убедитесь, что у вас есть индекс для transaction_date
и status
, например:
create index ix1 on deduction_transactions (transaction_date, status);