Índices em colunas de tipo de dados XML
Índices XML podem ser criados em colunas de tipo de dados xml. Eles indexam todas as marcas, valores e caminhos através das instâncias XML na coluna e se beneficiam do desempenho das consultas. Seu aplicativo pode se beneficiar de um índice XML nas seguintes situações:
Consultas em colunas XML são comuns em sua carga de trabalho. O custo da manutenção de índices XML durante a modificação de dados deve ser considerado.
Seus valores XML são relativamente grandes e as partes recuperadas são relativamente pequenas. A construção de índices evita a análise de todos os dados em tempo de execução e beneficia pesquisas de índice para processamento eficiente de consultas.
Índices XML se encaixam nas seguintes categorias:
Índice XML primário
Índice XML secundário
O primeiro índice na coluna de tipo xml deve ser o índice XML primário. Usando o índice de XML primário, os seguintes tipos de índices secundários têm suporte: PATH, VALUE e PROPERTY. Dependendo do tipo de consulta, esses índices secundários podem ajudar a melhorar o desempenho de consultas.
Observação |
---|
Não é possível criar ou modificar um índice XML a menos que as opções do banco de dados estejam definidas corretamente para trabalhar com o tipo de dados xml. Para obter mais informações, consulte Índice de texto completo em uma coluna XML. |
Instâncias XML são armazenadas em colunas de tipo xml como BLOBs (objetos binários grandes). Essas instâncias XML podem ser grandes e a representação binária armazenada de instâncias de tipo de dados xml pode ser de até 2 GB. Sem um índice, esses objetos binários grandes são fragmentados em tempo de execução para avaliar uma consulta. Essa fragmentação pode ser demorada. Por exemplo, considere a consulta a seguir:
WITH XMLNAMESPACES ('https://schemas.microsoft.com/sqlserver/2004/07/adventure-works/ProductModelDescription' AS "PD")
SELECT CatalogDescription.query('
/PD:ProductDescription/PD:Summary
') as Result
FROM Production.ProductModel
WHERE CatalogDescription.exist ('/PD:ProductDescription/@ProductModelID[.="19"]') = 1
Para selecionar as instâncias XML que atendem à condição na cláusula WHERE, o BLOB (objeto binário grande) XML em cada linha da tabela Production.ProductModel é fragmentado em tempo de execução. Em seguida, a expressão (/PD:ProductDescription/@ProductModelID[.="19"]) no método exist() é avaliada. Essa fragmentação em tempo de execução pode ser dispendiosa dependendo do tamanho e do número de instâncias armazenadas na coluna.
Se a consulta de BLOBs XML for comum no ambiente do seu aplicativo, a indexação de colunas de tipo xml ajudará. No entanto há um custo associado à manutenção do índice durante a modificação de dados.
Nesta seção
Tópico |
Descrição |
---|---|
Descreve o índice XML primário e suas linhas. |
|
Descreve os três tipos de índices XML secundários. |
|
Descreve como criar índices XML primários e secundários. |
|
Descreve como usar a instrução ALTER INDEX para modificar índices XML. |
|
Descreve como usar a instrução DROP INDEX para descartar índices. |
|
Descreve como criar um índice de texto completo em colunas XML. |
Consulte também