Próbuję dowiedzieć się, dlaczego odczyty logiczne są wykonywane na tabeli docelowej podczas wstawiania do niej, gdy jest pusta tabela. Mam poniższą tabelę.Logiczne odczytuje pustą tabelę docelową podczas wstawiania do niej
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_PADDING ON
GO
CREATE TABLE [dbo].[Employee](
[ID] [int] IDENTITY(1,1) NOT NULL,
[EmployeeID] [int] NOT NULL,
[EmployeeName] [varchar](50) NOT NULL
) ON [FG_Test]
GO
SET ANSI_PADDING OFF
GO
To jest pusta tabela z identyfikatorem będącym kluczem podstawowym z indeksem klastrowym na tym identyfikatorze. Kiedy należy stosować następujące INSERT
TRUNCATE TABLE [dbo].[Employee];
INSERT INTO [dbo].[Employee] WITH (TABLOCK) (EmployeeID, EmployeeName)
(
SELECT EmployeeID,
EmployeeName
FROM Process.Employee
);
Jak na ustawienie Statystyka IO, jestem coraz 1596236 logiczne czyta na stole dbo.Employee. Kiedy upuszczam indeks, te odczyty logiczne już się nie zdarzają, wtedy kiedy czytam - dodam ten sam indeks, to logiczne odczyty również już nie występują. Z czasem logiczne odczyty zaczynają się ponownie, gdy trzymam indeks na stole.
Dlaczego miałoby to być?