在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)
)
varchar(15)如果您只想存储IP而没有太多数据。
IPv4地址实际上是一个32位整数,可以将其转换为数字形式或从其数字形式转换为显示形式。(IPv6也是如此:它是一个128位整数)。
如果将其存储为binary(4),它将占用更少的空间(4个字节而不是15个字节);您可以在查询中进行IP范围检查;由于在数据库中不必进行字符串比较,因此在select语句中用作条件会更快。
缺点是您需要将IP转换为整数形式才能与DB一起使用。并且您必须先将其转换为它的显示形式,然后才能显示给用户。如果您稍作搜索,我相信您会找到所使用的任何语言的预编写函数,但这是一个额外的步骤。
我要说的是,这取决于您的情况是理想的。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句