索引列的key_ordinal = 0是什么

时间:2016-06-17 13:10:19

标签: sql sql-server indexing

在MSSQL中,我在分区表上有索引,当它等于零时我不明白属性key_ordinal的含义。

要创建索引,分区方案基于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);

查询显示 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'

结果是:

column_name key_ordinal
CUT_OFF     0
number      1

CUT_OFF

  • sys.index_columns中显示 key_ordinal = 0
  • Create Index声明
  • 中缺少
  • 来自sp_help 'TESTTB'
  • 的索引信息中缺少

MSDN says:

  

0 =不是键列,或者是XML索引,列存储索引或者   空间索引。

这意味着什么? 什么是 key_ordinal = 0

由于

1 个答案:

答案 0 :(得分:1)

看起来它是隐式添加到索引的叶子级别(如INCLUDE列)。因此,它不是关键列。以下是此索引的DBCC PAGE输出的屏幕截图。

根级别:

enter image description here

叶级别:

enter image description here