A melhor opção para você é capturar as condições de pesquisa que não podem ser executadas.
No MySQL a partir de 5.7.8 existe um configuração de max_execution_time .
Além disso, você pode criar algum script cron que verifique
SHOW PROCESSLIST
e lidar com consultas que estão sendo processadas além do seu limite de tempo.