根据用户的IP地址获取用户所在的国家/地区

时间:2015-08-22 16:15:50

标签: mysql

我有两个表,一个表(ipcountry)有以下列:

low, high, country 

如果IP地址介于低位和高位之间,则属于国家/地区

其他表(日志)定义如下:

username, ipaddr

日志表大约为100 MB。我想基于他们的IP地址有效地找到用户所在的国家/地区。我尝试使用以下查询:

select distinct username from `logs` 
left join `ipcountry` on `logs`.ipaddr between `ipcountry`.low and `ipcountry`.high
where `logs`.ipaddr='<my ipaddress goes here>'

然而,执行需要太长时间(我在一分钟后将其杀死)。我想知道,有更好的方法吗?

EXPLAIN SELECT结果:

enter image description here

编辑:我要做的是获取与ipaddr相关联的所有用户名,并在每一行旁边显示每个用户名来自的国家/地区(都将是同一个国家/地区)

1 个答案:

答案 0 :(得分:0)

请在用户名和ipaddr上放置多列索引,它将优化查询。