- Автор темы
- #1
Вопрос: Фильтр поиска по ip2country
есть две базы
база с пользователями (ип, логин, прочее)
база с зонами (начальный ип, конечный ип, прочее)
в базе с зонами есть 4 столбца
первые 2 с обычными начальными ip и конечными
вторые 2 с тем же ip в числовом формате (пропуск через ip2long/INET_ATON
и есть короткий простенький запрос
который при сканировании 17 результатов (фильтр по первой букве логина) думает 7 секунд
в остальных случаях думает over несколько минут, что категорически непримемлимо
сие чудо здесь:
что я делаю не так?
explain:
есть две базы
база с пользователями (ип, логин, прочее)
база с зонами (начальный ип, конечный ип, прочее)
в базе с зонами есть 4 столбца
первые 2 с обычными начальными ip и конечными
вторые 2 с тем же ip в числовом формате (пропуск через ip2long/INET_ATON
и есть короткий простенький запрос
который при сканировании 17 результатов (фильтр по первой букве логина) думает 7 секунд
в остальных случаях думает over несколько минут, что категорически непримемлимо
сие чудо здесь:
Код:
SELECT `user`.`POINTS`, `user`.`NAME`, INET_NTOA(`user`.`IPAddress`) AS `IP`
FROM `database1`.`user`
INNER JOIN `database2`.`ip2country` ON `user`.`IPAddress` BETWEEN `ip2country`.`begin_ip_num` AND `ip2country`.`end_ip_num`
WHERE `user`.`STEAMID` REGEXP '^z' AND `ip2country`.`country_code`='RU'
ORDER BY `user`.`POINTS`
LIMIT 0,100
explain:
Код:
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE user index IPAddress POINTS 4 NULL 4596
1 SIMPLE ip2country ref begin_ip_num,country_code country_code 12 const 3202 Using where