In einem bestimmten Tutorial habe ich gelesen, dass der Autor sys.indexes
nach dem Prädikat filtert index_id < 256000
. Was bringt das?
11
In einem bestimmten Tutorial habe ich gelesen, dass der Autor sys.indexes
nach dem Prädikat filtert index_id < 256000
. Was bringt das?
sys.sysindexkeys
sys.selective_xml_index_paths
,sys.xml_indexes
,sys.sysindexes
aber ich denke , diese werden nur aktualisiert, wenn die magische Zahl ist nicht mehr gültig.Antworten:
Dies basiert auf dem Missverständnis, dass XML-Indizes derzeit der einzige Typ sind, der jemals ein ID-Schema haben könnte, das> = 256000 ist (zumindest basierend auf ihrer Beobachtung; dieses Schema ist nicht AFAIK dokumentiert, also nicht einmal sicher, ob es beabsichtigt ist). Wahrscheinlich in aktuellen Versionen in Ordnung, aber wer weiß, welche Art von Index als nächstes hinzugefügt wird und wo das ID-Schema beginnt? Wenn Sie XML-Indizes ausschließen möchten, schließen Sie jetzt auch etwas anderes aus. Räumliche Indizes scheinen beispielsweise bei id = 384000 zu beginnen. Wenn die obige Abfrage räumliche Indizes, aber keine XML-Indizes enthalten soll, werden sie überrascht sein.
Ein viel besserer Filter wäre:
... oder noch besser, da es sich selbst dokumentiert ...
Und jetzt, wenn Sie beispielsweise auch räumliche Indizes ausschließen möchten, ändert sich Ihre Abfrage in ...
... anstatt herauszufinden, welchen numerischen Bereich die ID-Werte für räumliche Indizes belegen könnten (oder nicht). Viel Glück damit.
Diese sind in sys.indexes (Transact-SQL) ziemlich klar dokumentiert . Ich sehe keinen Hinweis auf diese magische Zahl und ich empfehle Ihnen dringend, Ihren Autor des Tutorials hier zu verweisen, damit er sehen kann, dass diese magische Zahl nicht etwas ist, auf das er sich verlassen sollte (es macht nichts aus, anderen beizubringen, sich darauf zu verlassen).
quelle
index_id
. Zumal genauere Daten zur Typbestimmung direkt daneben liegen ... im wahrsten Sinne des Wortes.Laut Buch "Microsoft SQL Server 2012 Internals" von Kalen Delaney, Craig Freeman, beginnt die Index-ID des XML-Index mit 256000 zu nummerieren. Um also alle Informationen zu Typindizes zu erhalten (sys.indexes abzufragen), aber XML-Indizes zu überspringen, können Sie einen solchen Filter platzieren.
Dieselbe Ergebnismenge kann erreicht werden, indem ein Filter in die Typspalte von sys.indexes eingefügt wird. Für den XML-Indextyp geben Sie = 3 ein.
oder
Die Spalte type_desc kann ebenfalls verwendet werden.
quelle