다음과 같은 테이블이 있다고 가정 해보십시오.
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" />