sqlserver从varchar(50)存储改为用varchar(10)的话
比如 用户名,我程序的要求是10位字符以内,所以:
如果我sqlserver从varchar(50)存储改为用varchar(10)的话,
1.会不会减少数据空间?
2.会不会提高我程序的效率?
3.有没有必要?
小弟先谢谢
1、会
2、不会
3、无所谓(现在最不值钱的就是空间,大点也不贵多少)
肯定会减少数据空间,但是个人认为没有必要。
就是节省空间,其他没什么
会么?
我感觉不会减少吧 ,..
varchar(N) 实际存储的空间 不是根据你的实际字段长度的么,不是根据N的吧?
(1)数据存储开销。
a. 每个varchar列需要额外的两个字节,用于反映存储的数据的长度。
b. 每个可为NULL的char列,需要一些字节(空位图)来反应数据的为空性。
c. 无论实际数据的长度是多少,char按照定义的长度分配存储空间。
d. varchar根据实际存储的数据长度来分配数据存储空间。
数据库的性能方面的也有影响
大小影响计算:
Variable_Data_Size = 2 + (Num_Variable_Cols x 2) + Max_Var_Size
Max_Var_Size = 所有可变长度列的最大字节大小
以上是可变列的计算有一个加最大的行字节数
而Fixed_Data_Size-- 所有固定长度列的总字节大
ps:
SQL Server 2008 增加了一个动态压缩的功能,它会根据输入的数据,动态的压缩数据.
所以,数据长度不一定和你输入的一致.
http://social.microsoft.com/Forums/zh-CN/sqlserverzhchs/threa
相关问答:
SQLserver2000里的datetime(8)和smalldatetime(4)在数据库查询分析器里显示只有年-月-日,但是在JSP里显示却是
年-月-日 00:00:00.0
怎样使用SQLserver的日期类型呢?
我尝试了这样的语句:
select ......
代码:
insert into openrowset('microsoft.ace.oledb.12.0','excel 12.0;hdr=yes;database=d:\a.xslx','select * from [sheet1$]') select * from table
注意:导出的数据和表头要一 ......
在SqlServer中如何查看历史上执行的存储过程的信息呢,如:传入参数,执行时间等等。如果不能查看历史记录,是否可以自己写触发器之类的,人工控制呢,在Oracle里面有动态视图可以随时查看历史执行的sql语句,SqlSer ......