Есть таблица:
CREATE TABLE `log_site` (
`id` BIGINT(20) NOT NULL AUTO_INCREMENT,
`date` DATETIME NOT NULL,
`ip` VARCHAR(20) NOT NULL,
`agent` TEXT NOT NULL,
`http_referer` TEXT NOT NULL,
`request_url` TEXT NOT NULL,
`method` VARCHAR(10) NOT NULL,
PRIMARY KEY (`id`))COLLATE='utf8_general_ci'ENGINE=MyISAM AUTO_INCREMENT=2503081;
200 тыс строк
Запрос SELECT ip, (SELECT COUNT(*) FROM log_site AS t2 WHERE t2.ip = t1.ip) AS count_data FROM log_site AS t1 GROUP BY ip выполняется 6 часов
Разбил на запросы по функциям в Python , выполнилось за 20 мин.
Настройки в my.conf дефолтные.
SELECT COUNT(*) as cnt,ip FROM log_site GROUP BY ip
для поля ip используйте индекс и поменяйте тип поля с VARCHAR на INT(10)Unsigned. Для преобразования используйте функции INET_ATON и INET_NTOA
Как развивать веб-проекты в 2026 году: технологии, контент E-E-A-T и факторы доверия
Современные инструменты для криптотрейдинга: как технологии помогают принимать решения
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники