IP地址数据类型

内蒂米·维耶班达拉(NethmiWijebandara)

在SQL Server中代表IP地址的理想数据类型是什么?使用更好varchar(n)吗?

这是我的数据库的一部分:

CREATE TABLE logUser 
(
    userId int primary key,
    userFirstName varchar(20),
    userLastName varchar(20),
    IPAddress real,
    city varchar(15),
    salary real 
)

CREATE TABLE Alert 
(
    AlertId varchar(10) primary key,
    alType varchar(20),
    aluserId int references logUser(userId)
)

CREATE TABLE GeoAnalytics
(
    AId int, --Analytics ID     
    AlertId varchar(10) references Alert(AlertId),
    Country varchar (20),
    City varchar(30),
    IPAddress real,

    CONSTRAINT pk PRIMARY KEY (AId, AlertId)
)
拉姆西·布伦纳(Ramsey Brenner)

varchar(15)如果您只想存储IP而没有太多数据。

IPv4地址实际上是一个32位整数,可以将其转换为数字形式或从其数字形式转换为显示形式。(IPv6也是如此:它是一个128位整数)。

如果将其存储为binary(4),它将占用更少的空间(4个字节而不是15个字节);您可以在查询中进行IP范围检查;由于在数据库中不必进行字符串比较,因此在select语句中用作条件会更快。

缺点是您需要将IP转换为整数形式才能与DB一起使用。并且您必须先将其转换为它的显示形式,然后才能显示给用户。如果您稍作搜索,我相信您会找到所使用的任何语言的预编写函数,但这是一个额外的步骤。

我要说的是,这取决于您的情况是理想的。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章