Carregar apresentação
A apresentação está carregando. Por favor, espere
PublicouFátima Carlos de Oliveira Alterado mais de 7 anos atrás
1
Encontro SQL BH May 2016 Desmistificando Índices com SQL Server
2
Apoio
4
Local Chapters
5
5
6
Upcoming SQL Saturdays Brazil Jun 18Rio de Janeiro #512 Visit www.sqlsaturday.com to register for an event near you! www.sqlsaturday.com
7
Agenda Conceitos Fundamentais Estatísticas Índice agrupado Índice não agrupado Índices Filtrados 7
8
Conceitos Fundamentais 8
9
Como o SQL acessa dados? Table Scan Índice 9
10
Table Scan 10 BOM PASSEIO!!!
11
Com Índice 11
12
Estrutura dos Índices Normalmente baseado em estruturas de árvore O nó mais alto é o raiz e o mais baixo os chamados nós folha 12 Tabela Página Índice Raiz Páginas Índices Nós Folhas Nós
13
Diferentes tipos de dados e índices Números Pequenos e por isso rápidos para navegar. Se incremental, melhor ainda. Textos Contrário dos números Datas Só perdem para os números. Ótimos para ordenar e obter intervalos. GUID Alguns dizem ser grande. Mas não é! Somente 16 bytes e pode ser comparado de maneira binária. Portanto muito rápido. BIT Equivocadamente dizem que não deve ser indexado 13
14
Seletividade, densidade Seletividade Quantas linhas serão retornadas em uma pesquisa, comparado ao total de linhas que existem Alta seletividade significa retornar um pequeno conjunto de linhas dentro do universo de dados Número de Valores Exclusivos / Número Total de Registros CPF X SEXO 14
15
Seletividade, densidade Densidade Na física – Massa / Volume Oposto a seletividade. Quando mais denso, menos seletivo normalmente, devido ao grande número de repetições. “MAIS DO MESMO” 15
16
Porque falar sobre isso? Chave primária é normalmente o índice mais seletivo Indexar colunas de baixa seletividade não vale a pena Lembrar que índices secundários são um ponteiro para o índice primário. Alta densidade significa centenas ou milhares de ponteiros para o primário. Escolha da ordem das colunas em um índice composto Otimizador de consultas faz uso destas estatísticas para escolher como criar os planos de execução 16
17
Quiz Você é DBA na sua empresa e o gerente de Recursos Humanos pediu a você que otimizasse a consulta de empregados para que ficasse o mais rápida possível. Qual coluna da tabela você usaria para filtrar rapidamente um empregado? 1.Sobrenome 2.O GUID 3.A data de admissão 4.A idade 5.O departamento 17
18
Primeiro Mito Índice deixa minhas alterações lentas? 18
19
Estatísticas 19
20
Estatísticas Criadas automaticamente com os índices Composto internamente de 03 partes: 1.Cabeçalho 2.Vetor de Densidade 3.Histograma DBCC show_statistics(‘nome da tabela ou view’, ‘nome da estatística’); 20
21
Estatísticas 21
22
Estatísticas - Histograma Retrata a distribuição de valores da coluna Mede a frequência de valores exclusivos Em resumo: calcula a Densidade / Seletividade Traz os passos usados para criar as estatísticas 22
23
Estatísticas - Cabeçalho Traz data e hora da última atualização Número total de linhas na ocasião Número de Passos no histograma (Máximo 200) Informa se é uma estatística agrupada para consultas de caracteres (char, varchar, etc) Se for um índice filtrado, traz a expressão do filtro 23
24
DEMO 24
25
Índice Simples Índice simples é aquele composto por uma única coluna. Útil quase sempre em colunas de alta seletividade 25
26
Índice Composto Índice composto é aquele formado por várias colunas Muito útil em consultas FREQUENTES de alta seletividade alcançada apenas em múltiplas colunas Índice composto pelas colunas A, B não é igual ao índice formado pelas colunas B,A Geralmente a boa prática nos diz para usar a coluna mais seletiva primeiro 26
27
Segundo Mito A ordem das colunas nos índices é indiferente? 27
28
Índice Agrupado 28
29
Índice Agrupado Páginas de dados da tabela são armazenados em uma sequência lógica As linhas são armazenados em uma sequência lógica junto com as páginas de dados Possível apenas um índice agrupado por tabela 29
30
Índice Agrupado - Criação Automaticamente ao especificar uma chave primária Manualmente, caso não exista 30 CREATE TABLE dbo.Article ( ArticleID int IDENTITY(1,1) PRIMARY KEY, ArticleName nvarchar(50) NOT NULL, PublicationDate date NOT NULL ); CREATE TABLE dbo.LogData ( LogID int IDENTITY(1,1), LogData xml NOT NULL ); ALTER TABLE dbo.LogData ADD CONSTRAINT PK_LogData PRIMARY KEY (LogId); CREATE CLUSTERED INDEX CL_LogTime ON dbo.LogTime(LogTimeID);
31
Terceiro Mito Se eu usar a coluna CPF como índice agrupado, terei lentidão na atualização de dados? 31
32
Incorporando espaço livre nos índices Pode resolver os problemas causados na alteração de dados FILLFACTOR PAD_INDEX (Aplica FILLFACTOR nas páginas intermediárias do índice 32
33
Índice agrupado eficiente Pequeno Estático Crescente Exclusivo 33
34
Índice agrupado – Tipos de Dados Adequados 34 TipoComentários intBom candidato principalmente se IDENTITY bigintBom candidato principalmente se IDENTITY uniqueidentifierAlguns possíveis problemas com tamanho varcharProblemas com tamanho, performance para ordenar e com o fato de normalmente não ser estático. dateProblemas por não ser exclusive, mas excelente para consultas de faixas smalldatetimeProblemas com exclusividade
35
Índice Não Agrupado 35
36
Índice não agrupado A página folha aponta para um índice agrupado normalmente Pode melhorar performance em colunas adicionais e muito utilizadas em consultas O impacto causado pela modificação de dados deve ser levado em conta 36
37
Índice não agrupado - Funcionamento 37 Índice agrupado Páginas contém dados idindex_id=1root_page Chave agrupada Página Raiz Páginas do Ìndice Nós Folha Contém a chave Página Raiz
38
Cláusula Include Colunas especificadas são adicionadas nos nós folha do índice não agrupado As colunas base, são ordenadas, as colunas incluídas não Não entra no limite de tamanho dos índices (16 colunas / 900 bytes) Evita a busca dos dados no índice agrupado Inclua TODAS as colunas que vai usar na sua consulta, senão perde o sentido SELECT EmployeeID, DepartmentID, LastName FROM Employee WHERE DepartmentID = 5 CREATE NONCLUSTERED INDEX NC_EmpDep ON Employee(EmployeeID, DepartmentID) INCLUDE (Lastname) 38
39
Índices Filtrados 39
40
Índices Filtrados Melhor desempenho das consultas Redução do custo de manutenção do índice Redução do custo de armazenamento Muito útil em colunas com alto índice de nulabilidade Muito útil em colunas de alta densidade mas em consultas a valores de alta seletividade 40
41
41 Volunteering Opportunities PASS would not exist without its global network of passionate, dedicated, and hardworking volunteers. Volunteer today! For local opportunities, please visit: volunteer.sqlpass.org For PASS HQ related activities, please update the “MyVolunteering” section of your MyPASS profile.
42
Stay Involved! Sign up for a free membership today at sqlpass.org. Linked In: http://www.sqlpass.org/linkedinhttp://www.sqlpass.org/linkedin Facebook: http://www.sqlpass.org/facebookhttp://www.sqlpass.org/facebook Twitter: @SQLPASS PASS: http://www.sqlpass.orghttp://www.sqlpass.org
43
Daniel Silveira 43 daniel@wgcsistemas.com.br daniel.silveira.182 dansil2002 www.danielsilveira.com.br dansil2002
44
OBRIGADO!!!! 44
Apresentações semelhantes
© 2024 SlidePlayer.com.br Inc.
All rights reserved.