INF: Explanation of Index ID 255

ID Number: Q75191

1.10 1.11 4.20

OS/2

Summary:

The indid column of the sysindexes table can have values ranging from

0 to 255. The following article defines three of these values (0, 1,

and 255) and how they are used by SQL Server.

More Information:

The pages allocated to an object are subdivided with an "index ID" tag

that is stored on every page. All of the pages with a particular indid

are chained together. The sysindexes table contains a separate row for

each indid so the beginning page and ending page in the chain can be

found, and the root page and distribution page can be found for

indexes.

Pure data pages have indid=0. Clustered index pages and the data pages

have indid=1 (remember, the leaf of a clustered index is the data).

However, there can never be indid=0 and indid=1 at the same time

(except, perhaps during the creation of a clustered index on a table

that already contains data).

Text and image pages need to be chained together independently of the

data page chains and index page chains. Indid=255 is used to tag these

types of chains. If a single table has several text or image columns,

there is still only one indid=255 entry in sysindexes. The "first"

column in sysindexes can no longer be considered head-of-chain for

indid=255.

The indid is stored on each page in a single byte. All text or image

pages for a particular table have indid=255. Another byte is normally

used for the number of the index tier this index page belongs to

(leaf=0).

On text/image pages, the byte is used for a "sub-indid" number. All

text or image pages have indid=255, but the first text or image column

has "sub-indid"=255; the second text or image column in that table has

"sub-indid"=254, and so on.

Additional reference words: Transact-SQL