Оба эти поля имеют размер
неопределенные значения NULL). Оба эти поля имеют размер по одному байту, следовательно, количество строк на странице не превышает 256, а на количество полей также существует внешнее ограничение 250 полей в одной таблице. Структура строки таблицы приведена на рис. 9.15.

Рис. 9.15. Структура строки данных для MS SQL Server 6.5
Вторая часть — это необязательная область, она существует только тогда, когда имеются в записи поля переменной длины.
Таблица смещений (Column offset table) состоит из:
Указатели занимают два последних байта в каждой структуре и поэтому они доступны для анализа.
Таблица смещения строк
Местоположение строки на странице определяется таблицей смешения строк (Row offset table). Таблица располагается в самом конце страницы и забирает дополнительно по 2 байта па каждую строку данных (см. рис. 9.16). Чтобы найти строку с заданным номером, SQL Server считывает из соответствующей ячейки смещение, которое и является адресом требуемой строки. Ячейка таблицы однозначно связана с определенным номером строки.
Удаленные строки имеют нулевое смещение. Поэтому из примера на рис. 9.16 видно, что строки 1 и 4 удалены.
У этой модели есть недостаток. После удаления строки в таблице смещения все равно остается ссылка на нее, которая занимает 1 байт. Однако при добавлении новой строки SQL Server проверяет таблицу смещений и ищет нулевое смещение, и новой строке присваивается номер удаленной, а в соответствующую ячейку таблицы смещений заносится адрес новой строки.
В SQL Server 6.5 используется понятие кластерного индекса. В таблице, для которой создается кластерный индекс, данные хранятся строго упорядочение) по полю, для которого создан этот кластерный индекс. Это поле (или набор полей) является первичным ключом таблицы или обладает свойством уникальности.