30 de março de 2012

Projeto de Banco de Dados - Aula 2


- Ìndices

* Junção de tabelas com um índice

Um segundo benefício de índices é melhorar a performance ao unir tabelas relacionais. Por exemplo, o seguinte comando SQL recupera os albuns de um determinado artista.
2.1
2.2

* Cardinalidade de índices

Quando utilizamos diferentes índices que podem ser utilizados em uma consulta. O banco de dados tenta identificar o índice mais efetivo para a consulta.

2.3

O otimizador escolhe um índice baseado no custo estimado para fazer o menor esforço possível. Vejamos as cardinalidades que confirmam a razão dessa decisão.

SET @@session.optimizer_switch='index_merge_intersection=off';

2.4

Cardinalidade é maior número de valores únicos.
Selectividade é definido como o número de valores distintos em relação ao número de registros na tabela.
- O ideal é valor igual 1;
- Ruim quando existem poucos valores distintos.

2.5
2.6

Utilizando wildcards para buscas parciais com índices

2.7

O que acontece se você colocar o '%' antes do termo de busca?

* Definindo a Linha como INDEX UNIQUE

Se quisermos garantir que os artistas tenham um nome único, criamos um índice do tipo UNIQUE.

Vantagens:
- Garante uma única ocorrência do valor;
- Informa ao otimizador que existe no máximo um valor para um registro.

2.8
2.9

*Ordenando Resultados

Um índice pode ser utilizado para ordenar os resultados.
Sem um índice o Banco de Dados utiliza um filesort interno para retornar as linhas na ordem pedida.

2.10
 2.11
2.12

* Índice de Multiplas Colunas

Um índice pode ter duas ou mais colunas, conhecidas como índices compostos ou concatenados.

Determinando que tipo de índice utilizar

2.13
2.14
2.15

Efetivamente existe um limite prático na criação de índices. O tamanho da largura do índice deve ser o tão curto quanto possível, para que seja atravessado a quantidade a ser lida o mais rápido possível.

2.16
2.17

* Combinando WHERE e ORDER BY

É possível utilizar um índice de multiplas colunas para otimizar a combinação de WHERE e ORDER BY.

2.18
2.19

* Impactos na utilização de Índices

- Adicionar indices em tabelas afetam a performance de escritas.
- Isto pode ser facilmente verificado na tabela ALBUM, através da definição da mesma.

2.20

Criar uma tabela com a mesma estrutura de ALBUM sem índices e inserir os dados contidos em ALBUM nesta nova tabela. Verificar os tempos de execução.

* Ìndices duplicados

Uma das melhores tecnicas para otimização é remover indices duplicados.
Ocorrências comuns são índices de chaves-primarias ou indices que são subconjuntos de outros indices.
Qualquer indice que está contido dentro da porção mais a esquerda de outro indice é um indice duplicado que não será utilizado.

2.21

* Impactos na utilização de Índices

-Espaço em disco

Verificar o tamanho de tabelas com e sem índices:

2.22

Melhoria na utilização de Ìndices

2.23

Um dos motivos para não utilizar o * nas consultas SQL.

Nenhum comentário:

Postar um comentário