1. Chaves Primárias
versus
Índices Cluster?
por Wagner Crivelini
Março/2012
2. Autor:
Wagner Crivelini
DBA DB2 & SQL SERVER @ IBM Brasil
Autor da comunidade SQLServerCentral.com
http://www.sqlservercentral.com/Authors/Articles/Wagner_Crivelini/293928/
Autor da revista SQL MAGAZINE BRASIL
http://www.devmedia.com.br/wagnercrivelini
Coautor do podcast DatabaseCast
http://imasters.com.br/perfil/databasecast
Colaborador do DB2 University
http://www.db2university.com/courses/mod/url/view.php?id=6553
2 PK vs Índice Cluster – CRIVELINI, W. Março/2012
3. Introdução
Premisssa 1:
Toda tabela DEVE ter uma chave primária
Premissa 2:
Toda tabela DEVE ter um índice cluster
Por default, na maioria dos SGBDs:
Colunas da Colunas do
Chave Primária = Índice Cluster
PERGUNTA: isso é uma boa estratégia?
3 PK vs Índice Cluster – CRIVELINI, W. Março/2012
4. Para que Usamos Chaves Primárias?
São identificadores de registros da tabela
Uma tabela pode ter várias chaves únicas, mas
apenas uma delas será a chave primária
PKs foram introduzidas no padrão SQL por
conveniência
Modelo relacional exige a existência de um
identificador (seja qual for) para definição de
relações
Padrão SQL define chaves estrangeiras com base
nas chaves primárias
Relações
4 PK vs Índice Cluster – CRIVELINI, W. Março/2012
5. Para que Usamos Índices Cluster?
Usamos índices (de modo geral) para acelerar
consultas
Índice cluster é a base de todos índices da tabela
Índice cluster tem quer criado sobre chave única.
Índice cluster define a estrutura de
armazenamento dos dados (páginas de dados)
5 PK vs Índice Cluster – CRIVELINI, W. Março/2012
6. Ação do Índice Cluster
6 PK vs Índice Cluster – CRIVELINI, W. Março/2012
7. Estrutura dos Índices B-Tree
Página raiz
Páginas
Intermediárias
Folhas
7 PK vs Índice Cluster – CRIVELINI, W. Março/2012
8. Como é a Estrutura do Índice Não-Cluster
Índice Cluster
Folhas de
Dados
Índice Não-Cluster
8 PK vs Índice Cluster – CRIVELINI, W. Março/2012
9. Por que o Padrão É Combinar PK + IndClust?
Minha impressão é que a combinação é casual.
Performance é conseguida através de indexação
Índice cluster é a base da indexação da tabela.
Aparentemente, a ideia é “melhor ter um índice
cluster qualquer do que não ter nenhum”.
9 PK vs Índice Cluster – CRIVELINI, W. Março/2012
10. Quando é Bom Separar PK e IndClust?
?
10 PK vs Índice Cluster – CRIVELINI, W. Março/2012
11. Referências
– WIKIPEDIA. Unique Key. http://en.wikipedia.org/wiki/Primary_key
– WIKIPEDIA. Surrogate key. http://en.wikipedia.org/wiki/Surrogate_key
– MICROSOFT. Types of Indexes - SQL Server 2008 R2. MSDN.
http://msdn.microsoft.com/en-us/library/ms175049.aspx
– MICROSOFT. Clustered Index Structures. MSDN.
http://msdn.microsoft.com/en-us/library/ms177443.aspx
– SHAW, Gail. Introduction to Indexes (the series). SQLServerCentral. Oct
26th, 2009. http://www.sqlservercentral.com/articles/Indexing/68439/
– SEARCHSQLSERVER.com. B-tree. SearchSQLServer
http://searchsqlserver.techtarget.com/definition/B-tree
– DAVE, Pinal. SQL Server - Index Levels, Page Count, Record Count and
DMV - sys.dm_db_index_physical_stats. SQLAuthority.com. July 4th,
2010.
http://blog.sqlauthority.com/2010/07/04/sql-server-%E2%80%93-index-levels
– CODEPLEX Open Source Community. Microsoft SQL Server Database
Product Samples: Download SQL Server 2008 SR4. Microsoft. Feb 15th,
2010.
– http://msftdbprodsamples.codeplex.com/releases/view/37109
11 PK vs Índice Cluster – CRIVELINI, W. Março/2012
12. Obrigado!
12 PK vs Índice Cluster – CRIVELINI, W. Março/2012