sys.sysindexes (Transact-SQL)
Изменения: 5 декабря 2005 г.
Содержит по одной строке для каждого индекса и таблицы в текущей базе данных. XML-индексы в этом представлении не поддерживаются, а секционированные таблицы и индексы поддерживаются не полностью. Используйте вместо него представление каталога sys.indexes.
Важно! |
---|
Эта системная таблица 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 г. |
|