sys.sysindexes (Transact-SQL)

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

Важное примечаниеВажно!

Эта системная таблица SQL Server 2000 включена в СУБД как представление для обеспечения обратной совместимости. Вместо нее рекомендуется использовать системные представления SQL Server. Сведения о том, как найти эквивалентное представление, см. в разделе Сопоставление системных таблиц SQL Server 2000 и системных представлений SQL Server 2005. В будущей версии Microsoft SQL Server эта возможность будет удалена. Избегайте использования этой возможности в новых разработках и запланируйте изменение существующих приложений, в которых она применяется.

Имя столбца

Тип данных

Описание

id

int

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

status

int

Сведения о состоянии системы.

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

first

binary(6)

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

Не используется, если indid = 0.

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

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

indid

smallint

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

0 = куча;

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

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

root

binary(6)

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

Не используется, если indid = 0.

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.

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. Этот идентификатор индекса больше не поддерживается. Если таблица или индекс содержит один или несколько больших типов-объектов, на каждую секцию выделяется одна единица распределения LOB_DATA для управления хранением данных. Дополнительные сведения см. в разделе Организация таблиц и индексов.

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

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

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

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

  • Использовать параметр AUTO_UPDATE_STATISTICS. Дополнительные сведения см. в разделе Использование статистики для повышения производительности запросов.

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

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