Elaborar Um Arquivo De Texto Contendo As Consultas SQL Para Realizar Algumas Consultas Para O Sistema SIG. As Consultas são Baseadas Nas Tabelas Do Banco De Dados Ilustrados Junto à Descrição Do Desafio Na Figura 1.
Pesquisas Acadêmicas: Elaborar Um Arquivo De Texto Contendo As Consultas SQL Para Realizar Algumas Consultas Para O Sistema SIG. As Consultas são Baseadas Nas Tabelas Do Banco De Dados Ilustrados Junto à Descrição Do Desafio Na Figura 1.. Pesquise 862.000+ trabalhos acadêmicosPor: kikuta • 29/3/2014 • 694 Palavras (3 Páginas) • 762 Visualizações
O SQL agora realizou uma busca (note o uso do operador “Seek”) diretamente no índice criado (CarrierTrackingNumber) e não mais precisou escanear a tabela inteira. Isso significa uma melhoria significativa na performance da consulta, caso a tabela tenha, por exemplo, milhões de registros.
Note que abaixo do primeiro operador temos uma outra operação realizada pelo SQL Server, o “Key Lookup”. O que é isto? No exemplo do índice remissivo do livro de história, quando procuramos pelo nome de “Getúlio Vargas” achamos no índice apenas o número da página em que a informação se encontra. Para obtermos mais informações sobre o 14º presidente do Brasil precisamos abrir na página informada. É exatamente o que o “Key Lookup” faz. Ele usa o ponteiro presente no índice não clusterizado para buscar as colunas “UnitPrice” e “OrderQty”. Quando a tabela possui um índice Clusterizado, este ponteiro referencia a chave da tabela e por este motivo a presença do índice clusterizado é importante para a performance das consultas.
Podemos evitar esta operação extra usando um tipo de índice especial chamado “included columns”. Com ele é possível que se inclua diretamente no índice todas informações retornadas pela consulta e com isso o SQL Server não precisa usar o ponteiro para “buscar” estes registros na tabela. Isso torna a consulta muito mais eficiente. Falaremos deste tipo de índice no futuro.
Melhores práticas para criação de índices:
• Mantenha o índice mais enxuto possível. Índices com muitas colunas são mais “pesados” para o SQL conseguir retornar os dados e manter o índice atualizado. Não esqueça que toda operação INSERT, UPDATE e DELETE aplicada na tabela deverá ser replicada a todos os índices que contenham as colunas afetadas.
• Tente criar o índice usando colunas com alta seletividade. Por exemplo, considere a seguinte consulta:
1
2
3
4
5
6
7
8
9 select
NationalIDNumber,
Title,
BirthDate,
HireDate
from
HumanResources.Employee
where
Gender = 'M'
Este SELECT retorna todos os registros da tabela “Employee” (empregados) que sejam homens (Gender=”M”). O resultado, segundo o execution plan é um table scan. Aí você pensa: “tranqüilo, vou criar um índice aí!” Ok, vamos criá-lo:
1 create nonclustered index IDX_Gender on HumanResources.Employee(gender)
Ao rodarmos a consulta novamente verificamos que ele simplesmente ignorou o novo índice. Devido a baixa seletividade da coluna, que provavelmente é de 1/2 dos registros, o SQL achou que será melhor escanear logo a tabela inteira.
• Crie um índice clusterizado (clustered index) em todas as tabelas que tenha muitos registros. Escolha com cuidado a(s) coluna(s) que farão parte do índice.
...