Разница между sp_spaceused и DataLength SQL Server - PullRequest
4 голосов
/ 20 апреля 2009

У меня есть таблица с одной строкой, когда я использую SP_SpaceUsed N '', она дает мне данные как 16 КБ

и когда я использую 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

это дает размер строки 167, я думаю, это в байтах

Я хотел бы знать, почему эта разница проявляется в результате

Заранее спасибо

Ответы [ 2 ]

3 голосов
/ 20 апреля 2009

sp_spaceused считает пространство, используемое страницами, которые составляют 8k блоков. Помните, что таблица также включает в себя такие вещи, как индексы, которые также занимают место. не говоря уже о том, что данные на страницах никогда не являются полными, если коэффициент заполнения не равен 100%

длина данных скажет вам, сколько байтов ваш столбец

2 голосов
/ 20 апреля 2009

вы сравнили 1 строку с таблицей, вам пришлось бы суммировать ее для каждой строки, и даже тогда она не будет такой же, потому что вы не показываете информацию заголовка и данные индекса

Вы также можете сделать что-то вроде этого

dbcc showcontig ('TempLeadHeader') with tableresults

Затем посмотрите на столбцы минимального, максимального и среднего размера записи

...