mysql 5.7 linux
Запрос ниже занимает около 210 секунд для 9000 записей. Не очень желаемая производительность.
Таблица данных имеет следующие поля:
login_attempt_id integer
user_id integer
login_attempt_data datetime
login_attempt_ip string`
I wi sh, чтобы запросить данные, чтобы найти количество IP-адресов, которые не смогли войти в систему. Например:
109 119.27.191.202
93 118.25.146.128
83 132.232.31.117
81 132.232.160.234
Запрос:
select count(t0.login_attempt_ip) as `ip_count`, t0.login_attempt_ip
from sohne_sma_v4.wp_login_fails t0
where t0.login_attempt_ip in
(select distinct t1.login_attempt_ip from sohne_sma_v4.wp_login_fails t1
where 20 <
(select count(t2.login_attempt_ip) from sohne_sma_v4.wp_login_fails t2
where t2.login_attempt_ip like t1.login_attempt_ip
)
)
and datediff(now(), t0.login_attempt_date) < 15
group by t0.login_attempt_ip
order by ip_count desc;
Я могу догадаться, что время затрачивается на два внутренних запроса.
Какой лучший способ достичь этот запрос?