2009-04-20 8 views
4

J'ai une table avec un seul rang lorsque j'utilise sp_spaceused N '<TableName>' il me donne données 16 KBDifférence entre sp_spaceused et DataLength SQL Server

et quand je l'utilise dataLength quelque chose comme ceci: -

 
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 

lui donne rowsize 167 Je suppose que cela est en octets

Je voudrais savoir pourquoi cette différence est à venir dans le résultat

Merci d'avance

Répondre

3

sp_spaceused compte l'espace utilisé par les pages, qui sont des blocs de 8k. Rappelez-vous qu'une table inclut également des éléments tels que les index qui occupent également de l'espace. sans oublier que les données sur les pages ne sont jamais complète à moins que le facteur de remplissage est de 100%

datalength vous dira combien d'octets votre colonne est

2

vous comparé 1 rang sur une table vous devez résumer pour chaque ligne et même alors, il ne sera pas la même chose parce que vous ne montrez pas les données d'information d'en-tête et index

vous pouvez aussi faire quelque chose comme ça

dbcc showcontig ('TempLeadHeader') with tableresults 

puis regarder min, max et moyenne colonnes recordSize

Questions connexes