Conhecendo Indices Step-by-Step IV
Boa tarde, comunidade SQL Server. Dando continuidade a série “Conhecendo índices Step-By-Step”. No último artigo foi abordado como o SQL Server navega em um índice nonclustered em uma heap. Já neste artigo mostraremos como o SQL Server navega em um clustered index.
Iremos utilizar uma tabela chamada ClusteredTable que tem apenas um clustered index. A coluna que estamos falando é a coluna id_cliente. Iremos executar a query e analisaremos o plano de execução gerado.
SET STATISTICS IO ON
SELECT *
FROM ClusteredTable
WHERE ID_Cliente = 500
SET STATISTICS IO OFF
Plano de execução:
Resultado:
Leituras lógicas realizadas foram três, uma a menos do que no nonclustered index do artigo anterior. Vamos entender? O procedimento de verificar as leituras é idêntico ao do artigo anterior.
Executaremos a query com a função que nos traz o comando dbcc.
SELECT dbo.fn_HexaToDBCCPAGE(Root), *
FROM sys.sysindexes
WHERE name = ‘PK_CL’
Abaixo executo os comandos dbcc onde encontra-se o registro:
DBCC TRACEON (3604)
DBCC PAGE (31,3,288,3) — 1º Leitura
A segunda leitura resume-se na ChildPageId 14728.
DBCC TRACEON (3604)
DBCC PAGE (31,3,14728,3) — 2º Leitura
Como pode ser visto, o id_cliente 500 encontra-se na página 14606. Mas como assim? O motivo é porque página 14606 começa no id_cliente 443 e termina no id_cliente 516 que é onde começa a próxima página. Executando o comando dbcc podemos confirmar isso:
DBCC TRACEON (3604)
DBCC PAGE (31,3,14606,3) — 3º Leitura Encontramos o ID_Cliente = 500
No resultado da nossa terceira leitura podemos ver que o registro está lá no slot 57. Até o próximo post. E o assunto a ser falado será!? Suspense. Index..rs
Um comentário
[…] tambem: Conhecendo Indices Step-By-Step (Por Thiago Carlos de Alencar) Parte 1 Parte 2 Parte 3 Parte 4 Gostar disso:GostoSeja o primeiro a gostar disso post. CategoriasÍndices Tags:Virtual PASS BR […]