•实战范例 1 : ip 地址反查
•资源: Ip 地址对应表,源数据格式为 startip, endip, area
源数据条数为 10 万条左右,呈很大的分散性
•目标:需要通过任意 ip 查询该 ip 所属地区
性能要求达到每秒 1000 次以上的查询效率
•挑战:如使用 between startip and endip 这样的条件数据库操作,因为涉及两个字段的 betweenand, 无法有效使用索引。
如果每次查询请求需要遍历 10 万条记录,根本不行。
•方法:一次性排序(只在数据准备中进行,数据可存储在内存序列)
折半查找(每次请求以折半查找方式进行)
假如这个表为 ip_area(startip,endip,area)
我可不可以这样
select max(startip) from ip_area where startip<=@query_ip
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.