第一种方法:
数据库种保存的ip地址段,归属地的数据结构如下:
要求查询ip地址:66.249.79.3的归属地信息。
一,用函数方式。
函数原理就是将ip转换成数值,66*256^3+249*256^2+79*256^1+3*256^0 = …………
在数据库种执行以下函数:
create or replace function inet_aton(ip text) returns int8 as $$
declarev int;res int8 := 0;i int := 3;beginforeach v in array string_to_array(ip, '.') loopres := res+v*(256^i);i := i-1;end loop;
return res;
end;
$$ language plpgsql;
函数执行后,可以在数据库种增加2列,保存转换后的整数类型的IP开始 结束标识。
如何查询定位归属地?使用sql查询,
select * from dim_ip_area dia where inet_aton('66.249.79.3') >=ipstart_num AND inet_aton('66.249.79.3')<=ipend_num ;
结果显示
耗时:4.933s
可以说效果比较慢。
二、直接用范围查询。
修改ip的类型 &#x
本文发布于:2024-01-31 01:01:17,感谢您对本站的认可!
本文链接:https://www.4u4v.net/it/170663408024185.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |