gpt4 book ai didi

mysql - Maxmind ip to city - mysql索引

转载 作者:行者123 更新时间:2023-11-30 23:32:08 27 4
gpt4 key购买 nike

我正在尝试使用 maxmind 数据库找出一些 ip 的城市。 ( http://www.maxmind.com/app/geolitecity )有 2 个表:
第一个表列:
startIpNum,endIpNum,locId
第二表列:
locId,country,region,city,postalCode,latitude,longitude,metroCode,areaCode
快速解释:我使用第一个表来获取表的位置 ID,然后我可以从第二个表中获取该位置的信息。好的,让我们忘记该过程的第二部分。为了完成第一部分,我使用 mysql 并获取 locId,我使用下一个代码。

SELECT locId FROM first_table WHERE startIpNum<=IP and endIpNum>=IP LIMIT 1

其中 IP 为 a*256*256*256+b*256*256+c*256+d(来自 ip => a.b.c.d,示例 197.248.67.1,a=197,b=248... 等等) 这意味着我们正在谈论整数之间的比较。问题来了,这个操作太慢了。我的第二个想法是使用索引,所以我尝试使用这样的索引:

CREATE INDEX test ON first_table ( startIpNum,endIpNum,locId)

也许它不是世界上最好的索引,但我认为这是解决我的问题的最佳方法……好吧……不是。这个过程仍然很慢,大约 10 秒。有任何想法吗????顺便说一下,这张表有将近 350 万行。但我知道问题在于运算符小于和大于,但我不知道我还能做什么。感谢您的帮助。

最佳答案

您的问题中有些事情不清楚:

查找1个IP需要10秒吗?

您要查找多少个 IP 地址以查找所在城市?

这两个表是从 maxmind CSV 格式创建的,还是您的数据?

你用的是maxmind数据库的CSV格式吗?我建议使用二进制格式,它要快得多。

关于mysql - Maxmind ip to city - mysql索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10039941/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com