sys.sysindexes (Transact-SQL)

Contém uma linha para cada índice e tabela no banco de dados atual. Não há suporte a índices XML nessa exibição. Não há suporte completo às tabelas e índices particionados nessa exibição; use a exibição do catálogo sys.indexes.

Observação importanteImportante

Esta tabela do sistema do SQL Server 2000 foi incluída como uma exibição para compatibilidade com versões anteriores. É recomendável usar as exibições do sistema do SQL Server atual. Para localizar uma ou mais exibições do sistema equivalentes, consulte Mapeando tabelas do sistema do SQL Server 2000 para exibições do sistema do SQL Server 2005. Esse recurso será removido em uma versão futura de Microsoft SQL Server. Evite usar esse recurso em desenvolvimentos novos e planeje modificar os aplicativos que atualmente o utilizam.

Nome da coluna

Tipo de dados

Descrição

id

int

ID da tabela à qual o índice pertence.

status

int

Informações de status do sistema.

Identificado apenas para fins informativos. Não há suporte. A compatibilidade futura não está garantida.

first

binary(6)

Ponteiro para a primeira página, ou página-raiz.

Não utilizado quando indid = 0.

NULL = O índice é particionado quando indid > 1.

NULL = A tabela é particionada quando indid é 0 ou 1.

indid

smallint

ID do índice:

0 = Heap

1 = Índice clusterizado

>1 = Índice não-clusterizado

root

binary(6)

Quando indid >= 1, root é o ponteiro para a página de raiz.

Não utilizado quando indid = 0.

NULL = O índice é particionado quando indid > 1.

NULL = A tabela é particionada quando indid é 0 ou 1.

minlen

smallint

Tamanho mínimo de uma linha.

keycnt

smallint

Número de chaves.

groupid

smallint

ID do grupo de arquivos em que o objeto foi criado.

NULL = O índice é particionado quando indid > 1.

NULL = A tabela é particionada quando indid é 0 ou 1.

dpages

int

Quando indid = 0 ou indid = 1, dpages é a contagem de páginas de dados utilizadas.

Quando indid > 1, dpages é a contagem de páginas de índice utilizadas.

0 = O índice é particionado quando indid > 1.

0 = A tabela é particionada quando indid é 0 ou 1.

Não produzirá resultados precisos se ocorrer estouro de linha.

reserved

int

Quando indid = 0 ou indid = 1, reserved é a contagem de páginas alocadas para todos os dados de índices e tabelas.

Quando indid > 1, reserved é a contagem de páginas alocadas para o índice.

0 = O índice é particionado quando indid > 1.

0 = A tabela é particionada quando indid é 0 ou 1.

Não produzirá resultados precisos se ocorrer estouro de linha.

used

int

Quando indid = 0 ou indid = 1, used é a contagem do total de páginas utilizadas para todos os dados de índices e tabelas.

Quando indid > 1, used é a contagem de páginas utilizadas para o índice.

0 = O índice é particionado quando indid > 1.

0 = A tabela é particionada quando indid é 0 ou 1.

Não produzirá resultados precisos se ocorrer estouro de linha.

rowcnt

bigint

Contagem de linhas no nível dos dados, baseada em indid = 0 e indid = 1.

0 = O índice é particionado quando indid > 1.

0 = A tabela é particionada quando indid é 0 ou 1.

rowmodctr

int

Conta o número total de linhas inseridas, excluídas ou atualizadas desde a última atualização das estatísticas da tabela.

0 = O índice é particionado quando indid > 1.

0 = A tabela é particionada quando indid é 0 ou 1.

No SQL Server 2005 e posteriores, rowmodctr não é totalmente compatível com versões anteriores. Para obter mais informações, consulte Comentários.

xmaxlen

smallint

Tamanho máximo de uma linha

maxirow

smallint

Tamanho máximo de uma linha de índice não-folha.

No SQL Server 2005 e posteriores, maxirow não é totalmente compatível com versões anteriores.

OrigFillFactor

tinyint

Valor do fator de preenchimento original utilizado quando o índice foi criado. Este valor não é mantido; porém, poderá ser útil se você tiver que recriar um índice e não se lembrar do fator de preenchimento que foi utilizado.

StatVersion

tinyint

Retorna 0.

Identificado apenas para fins informativos. Não há suporte. A compatibilidade futura não está garantida.

reserved2

int

Retorna 0.

Identificado apenas para fins informativos. Não há suporte. A compatibilidade futura não está garantida.

FirstIAM

binary(6)

NULL = O índice é particionado.

Identificado apenas para fins informativos. Não há suporte. A compatibilidade futura não está garantida.

impid

smallint

Sinalizador de implementação de índice.

Retorna 0.

Identificado apenas para fins informativos. Não há suporte. A compatibilidade futura não está garantida.

lockflags

smallint

Usado para restringir as granularidades de bloqueio consideradas para um índice. Por exemplo, para minimizar o custo de bloqueio, uma tabela de pesquisa que é essencialmente somente leitura pode ser configurada para realizar apenas bloqueios de nível de tabela.

pgmodctr

int

Retorna 0.

Identificado apenas para fins informativos. Não há suporte. A compatibilidade futura não está garantida.

keys

varbinary(816)

Lista de IDs das colunas que constituem a chave de índice.

Retorna NULL.

Para exibir as colunas de chave de índice, use sys.sysindexkeys.

name

sysname

Nome do índice ou estatística. Retorna NULL quando indid = 0. Modifique seu aplicativo de modo a fazê-lo procurar um nome de heap NULL.

statblob

image

Objeto binário grande (BLOB) de estatísticas.

Retorna NULL.

maxlen

int

Identificado apenas para fins informativos. Não há suporte. A compatibilidade futura não está garantida.

rows

int

Contagem de linhas no nível de dados, baseada em indid = 0 e indid = 1; o valor é repetido para indid >1.

Comentários

Colunas definidas como reservadas não devem ser usadas.

Nas versões anteriores do SQL Server, cada tabela que tinha pelo menos uma coluna text, ntext ou image também tinha uma linha em sysindexes como indid = 255. Essa ID de índice não existe mais. Quando uma tabela ou índice tem um ou mais tipos de dados de objeto grande (LOB), é alocada uma unidade de alocação LOB_DATA por partição para gerenciar o armazenamento desses dados. Para obter mais informações, consulte Organização de tabela e índice.

As colunas dpages, reservede used não retornarão resultados precisos se a tabela ou índice contiverem dados na unidade de alocação ROW_OVERFLOW. Além disso, as contagens de página para cada índice são rastreadas separadamente e não são agregadas na tabela base. Para visualizar contagens de páginas, use as exibições de catálogo sys.allocation_units ou sys.partitions ou a exibição de gerenciamento dinâmico sys.dm_db_partition_stats.

Nas versões anteriores do SQL Server, o Mecanismo de Banco de Dados mantinha contadores de modificações no nível de linha. Tais contadores, agora, são mantidos no nível de coluna. Portanto, a coluna rowmodctr é calculada e produz resultados similares aos resultados nas versões anteriores, mas não são exatos.

Se você usar o valor em rowmodctr para determinar quando atualizar as estatísticas, considere as seguintes soluções:

  • Não fazer nada. O novo valor de rowmodctr pode lhe ajudar, muitas vezes, a determinar quando atualizar as estatísticas, pois o comportamento é razoavelmente próximo dos resultados das versões anteriores.

  • Usar AUTO_UPDATE_STATISTICS. Para obter mais informações, consulte Usando estatísticas para melhorar o desempenho de consultas.

  • Usar um tempo limite para determinar quando atualizar as estatísticas. Por exemplo, toda hora, todo dia ou toda semana.

  • Usar informações de nível de aplicativo para determinar quando atualizar as estatísticas. Por exemplo, toda vez que o valor máximo de uma coluna identity for alterada em mais 10.000 ou toda vez que uma operação de inserção em massa for executada.