sp_spaceused和DataLength SQL Server之间的区别

时间:2009-04-20 13:43:24

标签: sql-server sql-server-2005 datalength

当我使用SP_SpaceUsed N'< TableName>'时,我有一个单行表它给我数据为16 KB

当我使用dataLength这样的东西时: -

select ClientID , 
(0 + isnull(datalength(ClientID), 1) + 
isnull(datalength(LeadID), 1) + 
isnull(datalength(Company_Name), 1) + 
isnull(datalength(Website), 1) + 
isnull(datalength(EmployeeCount), 1) + 
isnull(datalength(Revenue), 1) +
 isnull(datalength(Address), 1) + 
isnull(datalength(City), 1) + 
isnull(datalength(State), 1) + 
isnull(datalength(ZipCode), 1) + 
isnull(datalength(CountryID), 1) + 
isnull(datalength(Phone), 1) + 
isnull(datalength(Fax), 1) + 
isnull(datalength(TimeZone), 1) + 
isnull(datalength(SicNo), 1) + 
isnull(datalength(SicDesc), 1) +
 isnull(datalength(ResearchAnalysis), 1) + 
isnull(datalength(SourceID), 1) + 
isnull(datalength(BasketID), 1) + 
isnull(datalength(PipelineStatusID), 1) + 
isnull(datalength(SurveryID), 1) + 
isnull(datalength(NextCallDt), 1) + 
isnull(datalength(CurrentRecStatus), 1) +
 isnull(datalength(AssignedUserID), 1) + 
isnull(datalength(AssignedDate), 1) + 
isnull(datalength(TotValueAmt), 1) + 
isnull(datalength(Remove), 1) + 
isnull(datalength(Release), 1) + 
isnull(datalength(LegendID), 1) + 
isnull(datalength(Inserted_Date), 1) +
 isnull(datalength(Inserted_By), 1) + 
isnull(datalength(Updated_Date), 1) + 
isnull(datalength(Updated_By), 1)) 
as rowsize from TempLeadHeader order by rowsize desc

它给出了rowsize 167我想这是以字节为单位

我想知道为什么结果会出现这种差异

提前致谢

2 个答案:

答案 0 :(得分:3)

sp_spaceused计算页面使用的空间,即8k块。 请记住,表格还包括占用空间的索引等内容。更不用说页面上的数据永远不会满,除非填充因子是100%

datalength将告诉您列的字节数

答案 1 :(得分:2)

你将1行与一个表进行比较,你必须将它与每一行相加,即使那样它也不会相同,因为你没有显示标题信息和索引数据

你也可以做这样的事情

dbcc showcontig ('TempLeadHeader') with tableresults

然后查看最小,最大和平均记录大小列