Digamos que tengo una mesa como esta:
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
Si tuviera que hacer esto:
insert into SomeTable(SomeString1, SomeString2)
values('foo', 'bar')
go
Y ver el plan de ejecución real, solo veo una inserción de índice agrupado . ¿Por qué no veo una inserción de índice no agrupado en el plan de ejecución?
select * from SomeTable where String1 = 'foo'
, entonces veo que el optimizador de consultas de hecho elige el índiceIX_SomeString1
para una búsqueda de índice. Entonces debe estar actualizando ese índice, ¿no?Respuestas:
Para una inserción de una sola fila, obtiene un plan estrecho / por fila
Si selecciona el Operador de inserción de índice agrupado y ve la ventana de propiedades, puede ver la misma información que se muestra en el XML.
Si lo intentas por 1,000 filas
Obtiene un plan ancho / por índice diferente con las operaciones divididas por separado
Vea Wide vs. Narrow Plans o el blog de Craig Freedman para obtener más información sobre los dos
fuente
Nunca confíes en la visualización del plan gráfico, es solo para novatos. Los profesionales siempre miran el XML. La operación NC está ahí:
fuente