SQL Server sp_spaceused 和 DataLength 之间的区别
当我使用 SP_SpaceUsed N'
,当我使用 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 我想这是以字节为单位的
我想知道为什么结果中会出现这种差异
提前致谢
I have a table with single Row when i use SP_SpaceUsed N'<TableName>' it gives me data as 16 KB
and when I use dataLength something like this:-
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
it gives rowsize 167 i guess this is in bytes
I would like to know why this difference is coming up in the result
Thanks in advance
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
sp_spaceused 统计页使用的空间,即 8k 块。
请记住,表还包含索引等也会占用空间的内容。 更不用说页面上的数据永远不会满,除非填充因子为 100%
数据长度会告诉您列有多少字节
sp_spaceused counts the space used by pages, which are 8k blocks.
Remember that a table also includes things like indexes that take up space too. not to mention that data on pages are never full unless the fill factor is 100%
datalength will tell you how many bytes your column is
您将 1 行与表进行比较,您必须对每一行进行求和,即使如此,它也不会相同,因为您没有显示标题信息和索引数据,
您也可以执行类似的操作
然后查看最小值、最大值和平均记录大小列
you compared 1 row against a table you would have to sum it for every row and even then it won't be the same because you are not showing header information and index data
you can also do something like this
Then look at min, max and average recordsize columns