La meilleure option pour vous est d'attraper les conditions de recherche qui ne peuvent pas être effectuées.
Dans MySQL à partir de 5.7.8, il y a un paramètre max_execution_time .
Vous pouvez également créer un script cron qui vérifie SHOW PROCESSLIST
et traitez les requêtes qui sont traitées plus que votre limite de temps.