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 или каждый раз при выполнении операции массовой вставки.