MCDBA Brasil    
16:18:31
  Job Board


[Todas Oportunidades]
 

  TechNet Experience



 

  Recursos de Pesquisa

Encontrou um erro no SQL Server e não sabe o que ele significa?
Pesquise-o aqui.

Pesquisar na Web
MS Knowledge Base

   Pesquisar no Portal
   Pesquisar nos Fórums
 

  Links Rápidos


Envie bugs e feedback de melhorias para o time do SQL Server.




SQL Server 2008 R2 Books Online
Feature Pack for SQL Server 2008 R2
Download SQL Server Express 2008 R2 (FREE)
Download SQL Server 2008 R2 Trial
Cumulative Update 1 for SQL Server 2008 R2
Lista de Cumulatives Updates liberados para SQL Server 2008 R2
Cumulative Update 8 for SQL Server 2008 SP1
Lista de Cumulatives Updates liberados para SQL Server 2008 SP1
Lista de Cumulatives Updates liberados para SQL Server 2008 (RTM)
Lista de Cumulatives Updates liberados após SQL Server 2005 SP3
SQL Server 2005 SP3
Feature Pack for SQL Server 2008 (Out/08)
SQL Server 2008 Books Online (Out/09)
SQL Server 2008 Books Online (MSDN)
SQL Server 2005/2008 Samples Databases
SQL Server 2005 Features Comparison
Lista de Cumulative Hotfix liberados após SQL 2005 SP2
SQL Management Studio Express SP2
SQL Server 2000 SP4
Cumulative Hotfix for SQL 2000 SP4 (build 2187)
Bugs fixed in SQL 2000 SP4
SQL Server 2005 (Preços e licenciamento)
Upgrading to SQL Server 2005
Upgrading MSDE 2000 to SQL Express 2005
Documentando o Servidor SQL Server
SQL Server 2005 (Requisitos de sistema)
MSDE 2000 Release A Free
SQL Server 2000 Performance Tuning Guide
SQL Server 2005 - Cursos Gratuitos
FAQ Sobre Uso Apropriado do MSDE
Analisando a Performance do Servidor-CheckList
SQL Server 2000 Security Tools
Northwind and Pubs Sample Databases
 

  Menu Principal

Home
 Fale Conosco
 Pesquisas
 Recomende-nos
 Sobre
 
Comunidade:
 Arquivo de Newsletter
 Arquivo de Notícias
 Artigos/Tutoriais
 Estatíticas
 Fórum
 Livro de Visitas
 MCDBA Database
 Newsgroups e Blogs
 Revistas .NET/SQL
      Magazine

 SQL Server FAQ
 Top 10
 Tópicos
 Utilitários
 Web Links
 Webcasts
 
Membros:
 Downloads
 Enviar Notícias
 Hands On Labs
 Mensagens Privadas
 Scripts Sql
 Sua Conta
 

  Publicidade




 

  Artigos

Total de artigos: 599
Total de Categorias : 6


Mais visualizados
1: Instalando e Configurando o SQL Server 2005 Express
[1 comentários]
[146309 visualizações]

2: Livros em .pdf para download
[0 comentários]
[99113 visualizações]

3: SQL Server 2005 - Cursos Gratuitos
[1 comentários]
[33865 visualizações]

4: Microsoft SQL Server 2008 Books Online em Portugês
[0 comentários]
[24902 visualizações]

5: Database Mirroring - Configurando Alta Disponibilidade no Banco de Dados
[5 comentários]
[24452 visualizações]

6: Analisando a Performance do Servidor - CheckList
[5 comentários]
[21272 visualizações]

7: Documentando o Servidor SQL Server
[17 comentários]
[17655 visualizações]

8: Plano de Execução - O que analisar ?
[5 comentários]
[14607 visualizações]

9: Liberado versão final do SQL Server 2005 SP2
[0 comentários]
[13182 visualizações]

10: Importando e Exportando dados do SQL Server 2000
[0 comentários]
[12394 visualizações]


[ Mais conteúdo como este na seção de notícias ]
 

  Scripts SQL

Total de Scripts: 44


Últimas inclusões
1: usp_docservidor_2005

2: sp_truncatetable

3: usp_docservidor

4: fn_dateformat


Mais Baixados
1: usp_docservidor
[Downloads: 1812]

2: Localizando Registos Duplicados
[Downloads: 1770]

3: Localiza maiores tabelas em uma base
[Downloads: 1524]

4: Gera script para inserir dados
[Downloads: 1510]

5: Fazendo Rebuild dos índices
[Downloads: 1486]

6: sp_usrheadblocker
[Downloads: 1484]

7: Derrubar todas as conexões da base
[Downloads: 1476]

8: Cria Job para Backup
[Downloads: 1475]

9: usp_docservidor_2005
[Downloads: 1334]

10: Busca Tabelas sem índices
[Downloads: 1332]

11: Estima tamanho da tabela
[Downloads: 1308]

12: Associar Usuários Orfãos
[Downloads: 1253]

13: sp_usrtrackusers
[Downloads: 1179]

14: Obtendo as configurações de um servidor
[Downloads: 1146]

15: Recuperando base em Suspect
[Downloads: 1117]

16: Monitora Espaço em Disco
[Downloads: 1103]

17: Mostra espaço ocupado pelas tabelas
[Downloads: 1076]

18: Monitora espaço do Database
[Downloads: 1074]

19: Calcula seletividade da coluna
[Downloads: 985]

20: Migrando Logins entre Servidores
[Downloads: 962]

21: Alterar o owner dos objetos
[Downloads: 944]

22: Usando o DBCC SHRINKFILE
[Downloads: 889]

23: sp_usrinputbuffer
[Downloads: 852]

24: Recuperando uma base sem o arquivo de log
[Downloads: 765]

25: Obtendo as configurações de um servidor (Básico)
[Downloads: 704]

26: Administrar Cluster pelo Query Analyzer
[Downloads: 671]

27: Filtra SQL Errorlog
[Downloads: 667]

28: Verificando o Status das Triggers
[Downloads: 608]

29: Excluindo todas as tabelas de uma base
[Downloads: 580]

30: Desatachar bases do servidor
[Downloads: 559]

31: fn_dateformat
[Downloads: 540]

32: Script para alterar o nome lógido da base
[Downloads: 536]

33: Verificando o Status de um Cluster
[Downloads: 532]

34: Cria banco Northwind com dados
[Downloads: 531]

35: Localizar Tabelas Temporárias
[Downloads: 528]

36: Restaurando uma base para discos diferentes
[Downloads: 527]

37: Pesquisa uma dada coluna nas tabelas
[Downloads: 524]

38: Mostra Tabelas por FileGroups
[Downloads: 477]

39: Script para Attachar uma banco de dados
[Downloads: 467]

40: Importa arquivo .trc para uma tabela
[Downloads: 455]

41: sp_truncatetable
[Downloads: 433]

42: Expandindo o tamanho de uma base
[Downloads: 425]

43: Salva Pacotes DTS como arquivo .dts
[Downloads: 404]

44: Cria banco Pubs com dados
[Downloads: 299]


[ Mais conteúdo na seção de Scripts ]
 

  Sample Chapters

Há um problema em visualizar as notícias deste site
 

  SQLServercentral.com

·Sending scheduled SQL query results via HTML e-mail using SSIS
·Introduction to SQL ServerStatistics
·SQLBits - The 7 Wonders of SQL
·Automatic Restart of SSIS packages after Failover or Failure
·SQL Saturday #50 - East Iowa
·Restricting SecurityAdmin on SQL Server 2005/2008
·DMVs for Query Plan Metadata
·SQL Saturday #46 - Raleigh
·Parsing an ADO result set into a comma separated string in SSIS
·Raw Materials - Refugees

Leia mais...
 

  Total Hits

Total de Page views: 9857869
Page views de hoje: 4656
Page views de ontem: 6809
Page views do mês: 18616

Desde 03 de Julho de 2004
 

  Top 10 Links


1: SQLDev.net

2: DevSQL

3: SQL-Server-Performance.com

4: SQLDTS.com

5: SQLServerCentral.com

6: Database Journal

7: DBAzine.com

8: Microsoft SQL Server (Documentação)

9: Site pessoal do Narayana Vyas Kondreddi

10: SearchDatabase.com

 


 
  Dica da semana: Identificando a Melhor Coluna para o Índice
Postado em Terça-feira, 5 de Agosto de 2008 (23:07:00) por niltonpinheiro
 
 
  Dicas Quando temos a necessidade de criar índices compostos (mais de uma coluna em um índice), uma boa prática é identificarmos a coluna mais SELETIVA (coluna com menor repetição de valores) e fazer desta coluna a primeira coluna do índice. Ou seja, a coluna que possuir menor repetição de seus valores, deve ser declarada como a primeira coluna em um índice composto.

Exemplo:

Temos uma tabela com 37.000 linhas que possui várias colunas e entre elas temos: ORDERID, SHIPCOUNTRY e FIRSTNAME. As pesquisas sempre serão realizadas por SHIPCOUNTRY e FIRSTNAME.

Bom, de início é possível notar que precisaremos então de um índice composto pelas colunas SHIPCOUNTRY e FIRSTNAME, mas a pergunta aqui é: Em qual ordem de pesquisa teremos melhores ganhos de performance, (SHIPCOUNTRY, FIRSTNAME) ou (FIRSTNAME, SHIPCOUNTRY)?

Executando a query abaixo para calcular a seletividade das colunas, poderemos obter a resposta a esta pergunta:

-- Verifica a seletividade da coluna ShipCountry'
SELECT  [Qtde. Registros] = COUNT(*),
 [Reg. Distintos] = COUNT(DISTINCT ShipCountry),
 -- Quanto mais próximo de 1, melhor
 [Seletividade] = COUNT(DISTINCT ShipCountry)/CAST( COUNT(*) AS DEC(10,2)) 
FROM Orders

--Resultado
Qtde. Registros   Reg. Distintos    Seletividade
---------------     --------------       -------------
830                              21              0.02530120481

-- Verifica a seletividade da coluna FirstName'
SELECT  [Qtde. Registros] = COUNT(*),
 [Reg. Distintos] = COUNT(distinct FirstName),
 -- Quanto mais próximo de 1, melhor
 [Seletividade] = COUNT(distinct FirstName)/CAST( count(*) AS DEC(10,2))
FROM Orders

--Resultado
Qtde. Registros   Reg. Distintos   Seletividade
---------------      --------------     -------------
830                                 90          0.10843373493

O objetivo da análise é verificar quais das colunas de uma tabela terá maior seletividade (quanto mais próximo de 1, maior será a seletividade da coluna) e tornar esta coluna a primeira coluna do índice composto.

Seguindo nosso exemplo temos a seguinte:

Coluna - ShipCountry:
SELETIVIDADE = 0.02530120481

Coluna – FirstName:
SELETIVIDADE = 0.10843373493

Resultado final:
Comparando o valor retornado para a seletividade das duas colunas, constatamos que a coluna FirstName é a mais SELETIVA (possui um menor número de valores repetidos) e portanto deve ser considerada como a primeira coluna na composição de um índice composto.

Exemplo:

CREATE INDEX IxOrders_00 On Orders (FirstName, ShipCountry)

Sendo assim, ao invés de realizarmos nossa pesquisa como: WHERE SHIPCOUNTRY='MÉXICO' AND FIRSTNAME= 'ANTONIO'
Devemos realizar como: WHERE FIRSTNAME= 'ANTONIO' AND SHIPCOUNTRY='MÉXICO'

É claro que esta regra pode não atender a todos os sistemas, tudo dependerá muito da linha de pesquisa de cadaaplicação. Porém, esta dica server para a maioria dos sistemas OLTP com grandes volumes de transação e com muitas pesquisa em tabelas.

Uma boa prática também é independente do índice ser composto ou não, procurar sempre verificar a seletividade da coluna e na medida do possível, fazer desta coluna a chave do seu índice. Sempre que possível, verifique também o plano de execução de suas queries, ele lhe dirá o quanto seus índices estão sendo eficiêntes ou não.

Obviamente que colunas que sofrem atualizações (UPDATE) não devem ser consideradas como candidatas a compor o índice pois isto criará um ambiente proprício a page split [1], degradando assim a performance da sua aplicação.

[1] Page split é o termo utilizado para explicar a divisão de páginas de índices para acomodar novas inserções.



Nota: Review
 
 
  Links relacionados

· Mais sobre Dicas
· Notícias por niltonpinheiro


As notícias mais lidas sobre Dicas:
Formatando Datas no SQL Server

 

  Classificação de notícias

Votar: 4.86
Votos: 15


Por favor, dedique um segundo de seu tempo para votar nesta notícia:

Excelente
Muito bom
Bom
Regular
Péssimo


 

  Opções


 Imprimir  Imprimir

 Envie esta notícia para uma pessoa  Envie esta notícia para uma pessoa

 

 
 
Tópicos relacionados

Dicas
 
 


 
 
Os comentários são propriedade de quem os escreveu. Nós não nos responsabilizamos por seu conteúdo.
 
 


 
 
Comentários não podem ser enviados por usuários anônimos, por favor Cadastre-se
 
 


 
 
Re: Identificando a Melhor Coluna para o Índice (Pontos: 1)
por LucianoRocha em Sábado, 10 de Setembro de 2005 (11:20:31)
(Informações do usuário | Enviar uma mensagem)

Okay... muito bom esse Artigo...

Agora, talvez possam me ajudar...

Tenho que criar um índice numa tabela com 1.203.358 de registros o indice é esse:

CREATE INDEX ind_Fat
ON Hto (Id_Prod, DataVencto, Flag)

Mas utilizando o calculo do artigo obtive a seguinte seletividade..

id_prod          = .00000249302    (INT)
DataVencto    = .00008060776    (CHAR(10))
Flag                = .00000166201     (BIT)

Com isso, e seguindo a lógica do artigo, teria que criar o índice assim...

CREATE INDEX ind_Fat
ON Hto (DataVencto, Id_Prod, Flag)

É isso mesmo (mesmo DataVencto sendo char? Ou isso num tem nada a ver)

Grato



 
 


 
  Todas os logotipos e marcas registradas são de propriedade de seus respectivos donos.
Sistema de portais PHP-Nuke. Copyright © 2003. PHP-Nuke é um Software Livre liberado sob licença GNU/GPL.
Tempo para gerar esta página: 0.591 segundos