Sql server 2008 在索引字段上设置字段的精确大小

Sql server 2008 在索引字段上设置字段的精确大小,sql-server-2008,Sql Server 2008,我在SQL Server中有一个10列的表,其中一列是IPvarchar(39)。我将IP地址存储在这里,此字段具有次要非聚集索引,因为我通过此字段执行搜索 该字段设置为39个符号,对于IPv4来说已经足够了。如果我将此字段设置为精确的IPv4地址大小15个符号,我会获得性能优势吗?性能优势是存在的,但考虑的范围很小。但是,如果数据是固定长度的,则应使用CHAR/NCHAR,因为不建议为某些固定数据浪费存储空间 此外,如果您错误地尝试为IPV4地址输入一个更大的值,您将无法执行相同的操作。不会有

我在SQL Server中有一个10列的表,其中一列是
IP
varchar(39)。我将IP地址存储在这里,此字段具有
次要非聚集索引
,因为我通过此字段执行
搜索


该字段设置为39个符号,对于IPv4来说已经足够了。如果我将此字段设置为精确的IPv4地址大小15个符号,我会获得性能优势吗?

性能优势是存在的,但考虑的范围很小。但是,如果数据是固定长度的,则应使用CHAR/NCHAR,因为不建议为某些固定数据浪费存储空间


此外,如果您错误地尝试为IPV4地址输入一个更大的值,您将无法执行相同的操作。

不会有任何性能提升,但您可以节省空间。也就是说,将其设置为
int
将节省最多的空间,并避免构建可怕的检查约束,以确保所有数字都在正确的范围内。为什么不这样做呢?(假设现在只使用IPv4是安全的)他如何将其设置为int,因为IP地址包含“.”如1.1.1.1?@AnandPhadke-IPv4地址通常被认为是32位整数,通常表示为4组数字,每组是0-255范围内的数字,并用点分隔。但这只是一个字符串格式化的东西-您真正需要的是32位整数,它可以存储在
int
列中。我将继续使用varchar39,因为IPv6包含字母数字符号。