비 클러스터형 인덱스 삽입 테이블이 있다고 가정 해보십시오. create table SomeTable (

다음과 같은 테이블이 있다고 가정 해보십시오.

create table SomeTable
(
    id int identity(1, 1) not null primary key clustered,
    SomeString1 varchar(50) not null,
    SomeString2 varchar(50) not null
)
go

create nonclustered index IX_SomeString1
on SomeTable(SomeString1)
go

내가 이것을했다면 :

insert into SomeTable(SomeString1, SomeString2)
values('foo', 'bar')
go

실제 실행 계획을 보면 Clustered Index Insert 만 보입니다 . 실행 계획에 비 클러스터형 인덱스 삽입 이 표시 되지 않는 이유는 무엇 입니까?



답변

단일 행 삽입의 경우 좁은 / 행당 계획을 얻습니다.

INSERT INTO SomeTable(SomeString1, SomeString2)
SELECT TOP 1 type, type
FROM master..spt_values

클러스터형 인덱스 삽입 연산자를 선택하고 속성 창을 보면 XML에 표시된 것과 동일한 정보를 볼 수 있습니다.

1,000 행을 시도하면

INSERT INTO SomeTable(SomeString1, SomeString2)
SELECT TOP 1000 type, type
FROM master..spt_values

작업이 개별적으로 분리 된 다른 와이드 / 인덱스 계획을 얻습니다

참조 넓은 대 좁은 계획 또는 크레이그 프리드먼의 블로그를 두에 대한 자세한 내용은


답변

그래픽 계획 디스플레이를 절대 믿지 마십시오. 초보자 전용입니다. 전문가는 항상 XML을 봅니다. NC 작업이 바로 있습니다 :

<Update DMLRequestSort="false">
  <Object Database="[testdb]" Schema="[dbo]" Table="[SomeTable]" Index="[PK__SomeTabl__3213E83F4AAF1C98]" IndexKind="Clustered" />
  <Object Database="[testdb]" Schema="[dbo]" Table="[SomeTable]" Index="[IX_SomeString1]" IndexKind="NonClustered" />