Sql server sys.index复合键显示空堆行。预期?
我在一个表上有一个唯一的NC索引,当我通过Sql server sys.index复合键显示空堆行。预期?,sql-server,tsql,indexing,Sql Server,Tsql,Indexing,我在一个表上有一个唯一的NC索引,当我通过sys.index查看它时,我看到两行 这是预期的吗 我需要确定类似ETL流程的PK SELECT * FROM sys.indexes WHERE object_id = OBJECT_ID(‘MyTable’) 输出是为您的观看乐趣而旋转的 object_id 4 5 name NULL PK_SchedName_LineNo index_id 0
sys.index
查看它时,我看到两行
这是预期的吗
我需要确定类似ETL流程的PK
SELECT *
FROM sys.indexes
WHERE object_id = OBJECT_ID(‘MyTable’)
输出是为您的观看乐趣而旋转的
object_id 4 5
name NULL PK_SchedName_LineNo
index_id 0 6
type 0 2
type_desc HEAP NONCLUSTERED
is_unique 0 1
data_space_id 2 2
ignore_dup_key 0 0
is_primary_key 0 1
DDL如下所示:
CREATE TABLE [dbo].[Acc_ Schedule Line](
[Seq] [INT] NOT NULL,
[Schedule Name] [nvarchar](10) NOT NULL,
CONSTRAINT [PK_SchedName_LineNo] PRIMARY KEY NONCLUSTERED
(
[Schedule Name] ASC,
[Line No_] ASC
) WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON
, ALLOW_PAGE_LOCKS = ON, FILLFACTOR = 100) ON [Data Filegroup 1]
) ON [Primary]
GO
是的,因为原始表(在您的例子中是堆)也被视为索引。阅读Brent Ozar关于索引的一些文章。这是一个有趣的“轴心”——你是说
MyTable
同时拥有object\u id
4和5吗?但是,通常情况下,这正是您希望看到的具有非集群主键的表。您没有指定聚集索引,因此它是一个堆表。只是为了澄清两个常见的误解:唯一索引
或唯一约束
与主键
不同-从技术上讲,它们可能是表的主键,也可能是所谓的“候选键”,也唯一标识每行但不是主键的键。此外,这些都不一定是聚集索引——其中一个可以是聚集索引,但聚集索引不是必需的。而且,如果一个表没有聚集索引,在SQL Server中,它被视为一个堆,并显示为索引id为零。感谢您的出色响应,我很不好意思地在想——您知道的。是的,因为原始表(在您的例子中是一个堆)也被认为是一个索引。阅读Brent Ozar关于索引的一些文章。这是一个有趣的“轴心”——你是说MyTable
同时拥有object\u id
4和5吗?但是,通常情况下,这正是您希望看到的具有非集群主键的表。您没有指定聚集索引,因此它是一个堆表。只是为了澄清两个常见的误解:唯一索引
或唯一约束
与主键
不同-从技术上讲,它们可能是表的主键,也可能是所谓的“候选键”,也唯一标识每行但不是主键的键。此外,这些都不一定是聚集索引——其中一个可以是聚集索引,但聚集索引不是必需的。而且,如果一个表没有聚集索引,在SQL Server中,它被视为一个堆,并显示为索引id为零。感谢您的出色响应,我很不好意思地在想——您知道的。英雄联盟