En cierto tutorial que leí, el autor está filtrando sys.indexes
según el predicado index_id < 256000
. ¿Qué logra esto?
11
En cierto tutorial que leí, el autor está filtrando sys.indexes
según el predicado index_id < 256000
. ¿Qué logra esto?
sys.sysindexkeys
sys.selective_xml_index_paths
,sys.xml_indexes
,sys.sysindexes
pero supongo que éstos simplemente se actualizan si el número mágico ya no es válida.Respuestas:
Esto se basa en la idea errónea de que los índices XML son actualmente el único tipo que podría tener un esquema de identificación que sea> = 256000 (al menos en función de su observación; este esquema no está documentado AFAIK, por lo que ni siquiera está seguro de si es intencional). Probablemente esté bien en las versiones actuales, pero ¿quién sabe qué tipo de índice se agregará a continuación y dónde comenzará su esquema de identificación? Si desea excluir índices XML, ahora también está excluyendo otra cosa. Los índices espaciales, por ejemplo, parecen comenzar en id = 384000. Si la consulta anterior tiene la intención de incluir índices espaciales pero no índices XML, se sorprenderán.
Un filtro mucho mejor sería:
... o incluso mejor, ya que es autodocumentado ...
Y ahora, cuando también desea excluir, digamos, índices espaciales, su consulta cambia a ...
... en lugar de tener que averiguar qué rango numérico pueden ocupar (o no) los valores de id para los índices espaciales. Buena suerte con eso.
Estos están bastante claramente documentados en sys.indexes (Transact-SQL) . No veo ninguna referencia a este número mágico y le recomiendo encarecidamente que señale a su autor del tutorial aquí para que puedan ver que este número mágico no es algo en lo que deberían confiar (no importa enseñar a otros a confiar).
fuente
index_id
. Especialmente porque los datos más precisos para determinar el tipo se encuentran justo al lado ... literalmente.De acuerdo con el libro "Microsoft SQL Server 2012 Internals" Por Kalen Delaney, Craig Freeman, index_id del índice XML comienza a numerar con 256000. Por lo tanto, para obtener toda la información de los índices de tipo (consultando sys.indexes) pero omitiendo los índices XML, puede colocar un filtro así.
Se puede lograr el mismo conjunto de resultados colocando el filtro en la columna de tipo de sys.indexes. Para los tipos de índices XML, escriba = 3.
o
También se puede utilizar la columna type_desc.
fuente