Truy vấn sau không cần chạy thường xuyên và có thể được chuyển sang công việc cron:
DELETE FROM failures WHERE release_time < ?;
Truy vấn "boolean" này sẽ trả về 1 nếu người đó bị đưa vào danh sách đen, 0 nếu không:
SELECT
COUNT(ip_address) as blacklisted
FROM blacklist
WHERE
ip_address = ? AND
release_time > ? AND
failures > 5
Nó có thể tăng tốc mọi thứ vì bạn không sử dụng PHP để đếm hàng và so sánh số:
if ($row['blacklisted']) { /* ... */ }
Tôi không nghĩ rằng bạn thực sự có thể tránh được cái cuối cùng.