Следната заявка не трябва да се изпълнява редовно и може да бъде преместена в cron задание:
DELETE FROM failures WHERE release_time < ?;
Тази "булева" заявка ще върне 1, ако лицето е в черния списък, 0 в противен случай:
SELECT
COUNT(ip_address) as blacklisted
FROM blacklist
WHERE
ip_address = ? AND
release_time > ? AND
failures > 5
Това може да ускори нещата, тъй като не използвате PHP за броене на редове и сравняване на числа:
if ($row['blacklisted']) { /* ... */ }
Не мисля, че можете да избегнете последното наистина.