Pin
Новичок
Выборка int>=int1 AND int<=int2 не подхватывает ключ
Здравствуйте.
Не подскажите, как использовать индексы при выборке по числу в промежутке составного индекса (int1,int2)?
Есть хороший геотаргетинг от maxmind.com , в т.ч. free-версии. Получается, если заносить в одну таблицу ip посетителей сайта (ip=inet_aton, конечно), то потом можно получить город или страну с использованием таблиц типа
ip1 int unsigned,
ip2 int unsigned,
geo_name varchar(64),
primary key (ip1,ip2)
Естественно, записей посещений может быть достаточно много, а таблицы по странам у них по 70-80к.
Запрос типа
SELECT countryes.name, COUNT(*) AS amnt FROM all_my_ips LEFT JOIN countryes ON (ip >= ip1 && ip <= ip2) GROUP BY countryes.name
не хочет использовать индекс, пишет его только в possible_keys. Естественно, результат ждать приходится оочень долго.
JOIN на условии ip=ip1, естественно, использует индекс и проходит в момент.
Как использовать индекс с соблюдением полного условния?
Здравствуйте.
Не подскажите, как использовать индексы при выборке по числу в промежутке составного индекса (int1,int2)?
Есть хороший геотаргетинг от maxmind.com , в т.ч. free-версии. Получается, если заносить в одну таблицу ip посетителей сайта (ip=inet_aton, конечно), то потом можно получить город или страну с использованием таблиц типа
ip1 int unsigned,
ip2 int unsigned,
geo_name varchar(64),
primary key (ip1,ip2)
Естественно, записей посещений может быть достаточно много, а таблицы по странам у них по 70-80к.
Запрос типа
SELECT countryes.name, COUNT(*) AS amnt FROM all_my_ips LEFT JOIN countryes ON (ip >= ip1 && ip <= ip2) GROUP BY countryes.name
не хочет использовать индекс, пишет его только в possible_keys. Естественно, результат ждать приходится оочень долго.
JOIN на условии ip=ip1, естественно, использует индекс и проходит в момент.
Как использовать индекс с соблюдением полного условния?