Поделиться через


sys.sysindexes (Transact-SQL)

Изменения: 5 декабря 2005 г.

Содержит по одной строке для каждого индекса и таблицы в текущей базе данных. XML-индексы в этом представлении не поддерживаются, а секционированные таблицы и индексы поддерживаются не полностью. Используйте вместо него представление каталога sys.indexes.

ms190283.note(ru-ru,SQL.90).gifВажно!
Эта системная таблица SQL Server 2000 включена в СУБД как представление для обеспечения обратной совместимости. Вместо нее рекомендуется использовать системные представления SQL Server. Сведения о том, как найти эквивалентное представление, см. в разделе Сопоставление системных таблиц SQL Server 2000 и системных представлений SQL Server 2005. В будущей версии Microsoft SQL Server эта возможность будет удалена. Избегайте использования этой возможности в новых разработках и запланируйте изменение существующих приложений, в которых она применяется.
Имя столбца Тип данных Описание

id

int

Идентификатор таблицы, которой принадлежит данный индекс.

status

int

Внутренние сведения о состоянии системы.

first

binary(6)

Указатель на первую или корневую страницу.

В SQL Server версии 6.5 и более ранних столбец sysindexes.first всегда указывает на начало кучи, начало конечного уровня индекса в иерархии или начало цепочки страниц типа text и image.

В SQL Server версии 7.0 и более поздних столбец sysindexes.first не используется, если столбец indid = 0;

NULL = индекс секционируется, если столбец indid > 1;

NULL = таблица секционируется, если столбец indid равен 0 или 1.

indid

smallint

Идентификатор индекса:

0 = куча;

1 = кластеризованный индекс;

>1 = некластеризованный индекс.

root

binary(6)

Если столбец indid >= 1, столбец root является указателем на корневую страницу.

В SQL Server версии 6.5 и более ранних столбец sysindexes.root указывает на последнюю страницу в куче, если столбец indid = 0.

В SQL Server версии 7.0 и более поздних, если столбец indid = 0, столбец sysindexes.root не используется.

NULL = индекс секционируется, если столбец indid > 1.

NULL = таблица секционируется, если столбец indid равен 0 или 1.

minlen

smallint

Минимальный размер строки.

keycnt

smallint

Количество ключей.

groupid

smallint

Идентификатор файловой группы, в которой был создан объект.

NULL = индекс секционируется, если столбец indid > 1.

NULL = таблица секционируется, если столбец indid равен 0 или 1.

dpages

int

Если столбец indid равен 0 или 1, столбец dpages является счетчиком использованных страниц данных.

Если столбец indid > 1, столбец dpages является счетчиком использованных страниц индекса.

0 = индекс секционируется, если столбец indid > 1.

0 = таблица секционируется, если столбец indid равен 0 или 1.

Не дает точных результатов при возникновении переполнения строки.

reserved

int

Если столбец indid равен 0 или 1, столбец reserved является счетчиком страниц, распределенных для всех индексов и таблиц данных.

Если столбец indid > 1, столбец reserved является счетчиком страниц, распределенных для хранения индекса.

0 = индекс секционируется, если столбец indid > 1.

0 = таблица секционируется, если столбец indid равен 0 или 1.

Не дает точных результатов при возникновении переполнения строки.

used

int

Если столбец indid равен 0 или 1, столбец used является счетчиком общего количества страниц, использованных для всех индексов и таблиц данных.

Если столбец indid > 1, столбец used является счетчиком страниц, использующихся для хранения индекса.

0 = индекс секционируется, если столбец indid > 1.

0 = таблица секционируется, если столбец indid равен 0 или 1.

Не дает точных результатов при возникновении переполнения строки.

rowcnt

bigint

Счетчик строк уровня данных на основе значений indid = 0 и indid = 1.

0 = индекс секционируется, если столбец indid > 1.

0 = таблица секционируется, если столбец indid равен 0 или 1.

rowmodctr

int

Подсчитывает общее количество вставленных, удаленных или обновленных строк, начиная с момента последнего обновления статистики для таблицы.

0 = индекс секционируется, если столбец indid > 1.

0 = таблица секционируется, если столбец indid равен 0 или 1.

В SQL Server 2005 столбец rowmodctr не полностью совместим с более ранними версиями. Дополнительные сведения см. в разделе «Примечания».

xmaxlen

smallint

Максимальный размер строки.

maxirow

smallint

Максимальный размер неконечных индексных строк.

В SQL Server 2005 столбец maxirow не полностью совместим с более ранними версиями.

OrigFillFactor

tinyint

Оригинальное значение коэффициента заполнения, используемого при создании индекса. Это значение не поддерживается. Однако оно может быть полезным при повторном создании индекса, если забыто значение используемого коэффициента заполнения.

StatVersion

tinyint

Указано только в ознакомительных целях. Не поддерживается. Совместимость с будущими версиями не гарантируется.

Возвращает 0.

reserved2

int

Указано только в ознакомительных целях. Не поддерживается. Совместимость с будущими версиями не гарантируется.

Возвращает 0.

FirstIAM

binary(6)

Указано только в ознакомительных целях. Не поддерживается. Совместимость с будущими версиями не гарантируется.

NULL = индекс секционирован.

impid

smallint

Указано только в ознакомительных целях. Не поддерживается. Совместимость с будущими версиями не гарантируется. Флаг реализации индекса.

Возвращает 0.

lockflags

smallint

Используется для ограничения рассматриваемой гранулярности блокировки для индекса. Например, для минимизации стоимости блокировки уровень блокировки таблицы уточняющих запросов, находящейся в режиме только для чтения, может быть установлен только на уровне таблицы.

pgmodctr

int

Указано только в ознакомительных целях. Не поддерживается. Совместимость с будущими версиями не гарантируется.

Возвращает 0.

keys

varbinary(816)

Список идентификаторов столбцов, составляющих ключ индекса.

Возвращает значение NULL.

Для отображения столбцов ключа индекса используйте представление sys.sysindexkeys (Transact-SQL).

name

sysname

Имя индекса или статистики. Возвращает значение NULL, если столбец indid = 0. Измените приложение, чтобы оно выполняло поиск кучи с именем NULL.

statblob

image

Статистический большой двоичный объект (BLOB).

Возвращает значение NULL.

maxlen

int

Указано только в ознакомительных целях. Не поддерживается. Совместимость с будущими версиями не гарантируется.

rows

int

Счетчик строк уровня данных, в которых столбец indid = 0 или indid = 1; значение не увеличивается, если столбец indid >1.

Замечания

Столбцы, определенные как зарезервированные, не должны использоваться.

В более ранних версиях SQL Server каждой таблице, содержащей хотя бы один столбец типа text, ntext или image, соответствует строка в таблице sysindexes со значением столбца indid = 255. В SQL Server 2005 этот идентификатор индекса больше не поддерживается. Если таблица или индекс содержит один или несколько больших типов-объектов, на каждую секцию выделяется одна единица размещения LOB_DATA для управления хранением данных. Дополнительные сведения см. в разделе Организация таблиц и индексов.

Столбцы dpages, reserved и used не будут содержать точных результатов, если таблица или индекс содержит данные в единицах размещения ROW_OVERFLOW. Кроме того, счетчики страниц для каждого индекса отслеживаются отдельно и не суммируются для базовой таблицы. Для просмотра счетчиков страниц используйте либо представления каталога sys.allocation_units или sys.partitions, либо динамическое административное представление sys.dm_db_partition_stats.

В предыдущих версиях SQL Server компонент Database Engine поддерживал счетчики изменения уровня строк. В SQL Server 2005 эти счетчики поддерживаются на уровне столбца. Поэтому столбец rowmodctr содержит значение, похожее на значения в более ранних версиях, но не совпадающее с ними.

При использовании значения столбца rowmodctr для определения времени обновления статистики рассмотрите следующие решения.

  • Не делать ничего. Новое значение столбца rowmodctr зачастую может помочь определить время, когда нужно обновить статистику, поскольку поведение в этом случае похоже на более ранние версии.
  • Использовать параметр AUTO_UPDATE_STATISTICS. Дополнительные сведения см. в разделе Статистика индексов.
  • Использовать временное ограничение для определения времени обновления статистики. Например, каждый час, каждый день или каждую неделю.
  • Использовать данные уровня приложения для определения времени обновления статистики. Например, каждый раз, когда максимальное значение столбца identity изменяется более чем на 10 000 или каждый раз при выполнении операции массовой вставки.

См. также

Справочник

Представления каталога (Transact-SQL)
Соответствия между системными таблицами SQL Server 2000 и системными представлениями SQL Server 2005
sys.indexes (Transact-SQL)

Справка и поддержка

Получение помощи по SQL Server 2005

Журнал изменений

Версия Журнал

5 декабря 2005 г.

Измененное содержимое
  • Значение возврата изменено с NULL на 0 для секционированных таблиц и индексов в столбцах dpages, reserved, used, rowcnt и rowmodctr.
  • Исправленные результаты возвращены в столбец FirstIAM.