2014-06-05 8 views
5

Sto cercando di capire perché le letture logiche vengono eseguite su una tabella di destinazione quando si inserisce in essa quando è una tabella vuota. Ho la seguente tabella.Letture logiche sulla tabella di destinazione vuota quando ci si inserisce

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 

Questa è una tabella vuota con ID che rappresenta la chiave primaria con un indice cluster su tale ID. Quando uso la seguente dichiarazione dell'inserto

TRUNCATE TABLE [dbo].[Employee]; 

INSERT INTO [dbo].[Employee] WITH (TABLOCK) (EmployeeID, EmployeeName) 
(
SELECT EmployeeID, 
    EmployeeName 
FROM Process.Employee 
); 

Come per l'impostazione statistiche IO ON, sto ottenendo 1.596.236 letture logiche sul tavolo dbo.Employee. Quando faccio cadere l'indice, queste letture di logica non si verificano più, quindi quando aggiungo lo stesso identico indice anche le letture logiche non si verificano più. Nel tempo le letture logiche ricominciano quando tengo l'indice sul tavolo.

Perché dovrebbe essere?

risposta

1

Generalmente, le letture logiche vengono riportate per la tabella di destinazione quando l'inserto non viene registrato in modo minimale.

Queste letture logiche sono associate alla ricerca di una posizione nella struttura esistente per aggiungere le nuove righe. Gli inserimenti con registrazione minima utilizzano il meccanismo di caricamento in blocco, che alloca pagine/estensioni completamente nuove (e quindi non ha bisogno di leggere la struttura di destinazione nello stesso modo).

La variante visualizzata durante l'inserimento in un albero b dipende probabilmente dal fatto che l'ottimizzatore decida di ordinare le righe nell'ordine della chiave dell'indice (inserire la proprietà dell'operatore DMLRequestSort = true), che può abilitare gli inserimenti con registrazione minima se la tabella di destinazione è vuota oppure se trace flag 610 è abilitato.

Problemi correlati