In MSSQL habe ich Index für eine partitionierte Tabelle, für die ich die Bedeutung der Eigenschaft key_ordinal
nicht verstehe, wenn es gleich Null ist.Was ist key_ordinal = 0 für Indexspalten
Um den Index zu erstellen, basiert das Partitionsschema auf CUT_OFF.
create table dbo.TESTTB (CUT_OFF datetime, number int) on partscheme(CUT_OFF);
create index TESTIX on dbo.TESTTB (number) on partscheme(CUT_OFF);
Die Abfrage zeigt die Werte von key_ordinal:
select c.name as column_name, b.key_ordinal
from sys.indexes a
inner join sys.index_columns b
on a.object_id = b.object_id and a.index_id = b.index_id
inner join sys.all_columns c on b.object_id = c.object_id
and b.column_id = c.column_id
where a.name = 'TESTIX'
Die Ergebnisse sind:
column_name key_ordinal
CUT_OFF 0
number 1
Die Säule cut_off:
- Ist in
sys.index_columns
mit key_ordinal = 0 - Fehlen in
Create Index
Anweisung - Fehlen in Index von
sp_help 'TESTTB'
0 = keine Schlüsselspalteninformationen zeigt, oder ist ein XML-Index, ein Columnstore-Index oder ein räumlicher Index.
Was bedeutet das? Was ist key_ordinal = 0?
Dank
Sie Partitionieren einer Heap-Tabelle, da Sie keinen Clustered-Index erstellt haben (entweder explizit oder implizit als die Primärschlüssel). Wollen Sie das wirklich tun? Es ist ein ungewöhnliches Szenario, um es gelinde auszudrücken, und wahrscheinlich die Erklärung für das seltsame 'key_ordinal'. –
Ich denke, es ist ähnlich der Situation unter 'is_included_column':" Spalten implizit hinzugefügt, weil sie eine Partitionierungsspalte sind, werden als 0 zurückgegeben. " –
"0 = Keine Schlüsselspalte", - sieht so aus. –