关于VARCHAR,CHAR,NVARCHAR对于占用空间的比较
CREATE TABLE #M(C1 VARCHAR(40),C2 VARCHAR(40),C3 VARCHAR(40),C4 VARCHAR(40)) CREATE TABLE #M1(C1 VARCHAR(1000),C2 VARCHAR(1000),C3 VARCHAR(1000),C4 VARCHAR(1000)) CREATE TABLE #M1_1(C1 CHAR(1000),C2 CHAR(1000),C3 CHAR(1000),C4 CHAR(1000)) CREATE TABLE #M2(C1 NVARCHAR(1000),C2 NVARCHAR(1000),C3 NVARCHAR(1000),C4 NVARCHAR(1000)) SET NOCOUNT ON INSERT #M SELECT NEWID(),NEWID(),NEWID(),NEWID() GO 10000 INSERT #M1 SELECT NEWID(),NEWID(),NEWID(),NEWID() GO 10000 INSERT #M1_1 SELECT NEWID(),NEWID(),NEWID(),NEWID() GO 10000 INSERT #M2 SELECT NEWID(),NEWID(),NEWID(),NEWID() GO 10000 USE tempdb SP_SPACEUSED #M GO SP_SPACEUSED #M1
GO SP_SPACEUSED #M2
GO
SP_SPACEUSED #M1_1
结论:由于VARCHAR是可以伸缩的,所以不管给它设置多宽,占用空间应该都是一样的,Nvarchar约等于VARCHAR的2倍,而CHAR明显是占用更多空间