Em um determinado tutorial que li, o autor está filtrando sys.indexes
com base no predicado index_id < 256000
. O que isso faz?
Em um determinado tutorial que li, o autor está filtrando sys.indexes
com base no predicado index_id < 256000
. O que isso faz?
Isso se baseia no equívoco de que os índices XML são atualmente o único tipo que poderia ter um esquema de id >= 256000 (pelo menos com base em sua observação; esse esquema não está documentado AFAIK, portanto, nem tenho certeza se é intencional). Provavelmente bom nas versões atuais, mas quem sabe que tipo de índice será adicionado a seguir e onde seu esquema de id começará? Se você deseja excluir índices XML, agora também está excluindo outra coisa. Índices espaciais, por exemplo, parecem começar em id = 384000. Se a consulta acima pretende incluir índices espaciais, mas não índices XML, eles ficarão surpresos.
Um filtro muito melhor seria:
...ou melhor ainda, já que é auto-documentável...
E agora, quando você também deseja excluir, digamos, índices espaciais, sua consulta muda para...
...em vez de ter que descobrir qual intervalo numérico os valores de id para índices espaciais podem ocupar (ou não). Boa sorte com isso.
Eles estão claramente documentados em sys.indexes (Transact-SQL) . Não vejo nenhuma referência a esse número mágico e recomendo fortemente que você aponte o autor do tutorial aqui para que ele veja que esse número mágico não é algo em que deva confiar (não importa ensinar os outros a confiar).
De acordo com o livro "Microsoft SQL Server 2012 Internals" de Kalen Delaney, Craig Freeman, o index_id do índice XML começa com 256.000.
O mesmo conjunto de resultados pode ser obtido colocando o filtro na coluna de tipo de sys.indexes. Para o tipo XML de índices, digite = 3.
ou
A coluna type_desc também pode ser usada.