Guidelines for selecting the in-row LOB length

The choice of the in-row LOB length affects the storage space used for the data pages, LOB pages, and the number of rows that can fit on a data page:

StepsIdentifying in-row LOB length selection

  1. Identify the minimum, maximum and average data row size for the table with LOBs being stored off-row:

    1> select i.minlen, t.datarowsize, i.maxlen
    2> from sysindexes i, systabstats t
    3> where i.id = object_id('DYNPSOURCE')
    4>   and i.indid in (0, 1)
    5>   and i.id = t.id
    6> go
    
    
     minlen datarowsize                 maxlen
    ------  --------------------------- ------
     9                       105.000000    201
    
    
  2. Compute the mininum, average, and maximum data lengths for the off-row column of interest:

    1> select datalength(FIELDINFO) as fieldinfo_len into 
           #dynpsource_FIELDINFO
    2> from DYNPSOURCE
    3> where datalength(FIELDINFO) < @@maxpagesize
    4> go
    
    
    (65771 rows affected)
    
    1> select minlen = min(fieldinfo_len), avglen = avg(fieldinfo_len), 
           maxlen = max(fieldinfo_len)
    2> from #dynpsource_FIELDINFO
    3> go
    
    
     minlen     avglen      maxlen
    ----------- ----------- -----------
            536        7608       16080
    
    

    Out of a total of about 190,000 rows in the DYPNSOURCE table, approximately 65000 of them had the off-row LOB column DYPNSOURCE such that its data length was well within the logical page size of 16K.

    By choosing an in-row LOB length that lies between the minlen or avglen in the above output, different numbers of off-row LOBs can be brought in-row, thereby providing different amounts of LOB storage savings.