Кварц слишком медленно выбирается из большого числа триггеров, как я могу это сделать?

У меня есть три миллиона триггер в таблице QRTZ_TRIGGERS.

И ниже я обнаружил, что запрос слишком медленный, потому что ORDER BY NEXT_FIRE_TIME ASC, PRIORITY DESC. Если убрать заказ по sql, запрос выполняется быстро.

CREATE INDEX IDX_QRTZ_T_NFT_ST_MISFIRE ON QRTZ_TRIGGERS(SCHED_NAME,MISFIRE_INSTR,NEXT_FIRE_TIME,TRIGGER_STATE);


SELECT TRIGGER_NAME,
       TRIGGER_GROUP
FROM QRTZ_TRIGGERS
WHERE SCHED_NAME = 'TestScheduler1'
  AND NOT (MISFIRE_INSTR = -1)
  AND NEXT_FIRE_TIME < 1521430157456
  AND TRIGGER_STATE = 'WAITING'
ORDER BY NEXT_FIRE_TIME ASC,
         PRIORITY DESC

Могу ли я просто исправить, добавив лимит? или любой другой способ может решить этот вопрос?

Я попытался добавить три индекса
1) NEXT_FIRE_TIME
И если просто ORDER BY NEXT_FIRE_TIME ASC, скорость в порядке.

2) PRIOIRTY DESC Если просто сделать заказ по PRIORITY DESC, скорость будет низкой.

Версия MySQL 5.7.20

0 ответов

Другие вопросы по тегам