如何优化处理IP地址库的表

wangxk 2005-08-10 11:55:00
老大让设计一个IP地址库的表,记录数有十万,甚至百万,
如何处理、设计才能有更好的查询性能呢?
各位给点意见吧:)
...全文
378 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
LoveMango 2006-02-09
  • 打赏
  • 举报
回复
mark
zjcxc 2005-08-10
  • 打赏
  • 举报
回复
上面是IP地址的字符形式与数据形式之间的相互转换函数.

IP地址被保存前应该转换为数字,仅在显示时转换为字符,处理时应该统一用数字处理.
zjcxc 2005-08-10
  • 打赏
  • 举报
回复
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[f_IP2Int]') and xtype in (N'FN', N'IF', N'TF'))
drop function [dbo].[f_IP2Int]
GO

/*--字符型 IP 地址转换成数字 IP

--邹建 2004.08(引用请保留此信息)--*/

/*--调用示例

select dbo.f_IP2Int('192.168.0.11')
select dbo.f_IP2Int('12.168.0.1')
--*/
CREATE FUNCTION f_IP2Int(
@ip char(15)
)RETURNS bigint
AS
BEGIN
DECLARE @re bigint
SET @re=0
SELECT @re=@re+LEFT(@ip,CHARINDEX('.',@ip+'.')-1)*ID
,@ip=STUFF(@ip,1,CHARINDEX('.',@ip+'.'),'')
FROM(
SELECT ID=CAST(16777216 as bigint)
UNION ALL SELECT 65536
UNION ALL SELECT 256
UNION ALL SELECT 1)A
RETURN(@re)
END
GO



if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[f_Int2IP]') and xtype in (N'FN', N'IF', N'TF'))
drop function [dbo].[f_Int2IP]
GO

/*--数字 IP 转换成格式化 IP 地址

--邹建 2004.08(引用请保留此信息)--*/

/*--调用示例

select dbo.f_Int2IP(3232235531)
select dbo.f_Int2IP(212336641)
--*/
CREATE FUNCTION f_Int2IP(
@IP bigint
)RETURNS varchar(15)
AS
BEGIN
DECLARE @re varchar(15)
SET @re=''
SELECT @re=@re+'.'+CAST(@IP/ID as varchar)
,@IP=@IP%ID
from(
SELECT ID=CAST(16777216 as bigint)
UNION ALL SELECT 65536
UNION ALL SELECT 256
UNION ALL SELECT 1)a
RETURN(STUFF(@re,1,1,''))
END
zjcxc 2005-08-10
  • 打赏
  • 举报
回复
IP地址使用bingint或者decimal存储,这样检索和处理的效率很高.
hisi 2005-08-10
  • 打赏
  • 举报
回复
需要分段查询吗?
如果不需要,就像一楼。
如果需要就建4个字段,把各部份分开存储。
8LY8Apollo 2005-08-10
  • 打赏
  • 举报
回复
把开始和结束ip地址转换成2进制的存储,然后在列上加索引,查询起来匹配很快。
Frewin 2005-08-10
  • 打赏
  • 举报
回复
Create table tb_adree(Fadree Varchar(50))
然后将Fadree设为主键
winternet 2005-08-10
  • 打赏
  • 举报
回复
mark
wangxk 2005-08-10
  • 打赏
  • 举报
回复
大家说的都很好,尤其是zjcxc,谢谢:)
受益匪浅,
多多讨论,
分不够,
再加.

22,209

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧