Indexao de Tabelas
Particionamento de Tabelas
Otimizao de Consultas
Infraestrutura
O que so?
Quais tipos?
Quando utilizar?
Tipos de ndices?
Existem quatro tipos bsico de ndices:
USE perf;
Agora vamos aprender a criar um ndice simples. Para isso, criamos uma
tabela (produtos), adicionando um ndice para o campo nome, atravs do
comando INDEX idx_nome(Nome):
Nome VARCHAR(50),
key Codigo(Codigo),
INDEX idx_nome(Nome)
);
O ndice (idx_nome) referencia o campo nome, utilizando o campo completo como ndice. Para
visualizar os ndices de uma tabela, voc pode utilizar o comando SHOW INDEXES. A partir
da tabela recm-criada, vamos para o prompt e escrevemos o comando:
Agora voc j sabe como criar um ndice no momento da criao da tabela. Portanto, vamos
excluir a tabela recm criada e aplicar um exemplo mais usual. Para isso, utilize o comando
DROP TABLE para excluir a tabela recm criada.
Codigo INT,
Nome VARCHAR(50),
key Codigo(Codigo)
);
Pense em uma escola, onde todas as matrculas encontram-se em uma nica tabela.
Neste caso, poderamos particionar esta tabela nica pelo ano de matricula, gerando
diversas outras sub-tabelas. Portanto, caso no houvesse mais o interesse por um
determinado ano de matrcula, a remoo poderia ser aplicada especificamente
naquele ano de interesse. Desta forma, removendo os dados absoletos.
Tipos de particionamento
disponveis
RANGE [COLUMNS]
LIST [COLUMNS]
HASH
[Linear] Key
Range Columns e List Columns s esto disponveis a partir da verso 5.5 do MySQL.
Os servidores da KINGHOST j possuem essa variante.
IMPORTANTE: O Range pode ser particionado por uma coluna do tipo INT, podendo
ser smallint e suas variantes, mas precisa ser um campo inteiro. Exemplo:
As parties so avaliadas de cima para baixo. Ou seja, quando a busca efetuada para
achar uma data no ms de maio, o sistema ir se perguntar "partition primeiro trimestre
e ver que cinco no menor que quatro, mas cinco menor do que sete, ento ele ir
para a segunda partio, onde est o ms de maio e a informao desejada.
Isso garante que sempre haver uma distribuio uniforme ao longo das parties.
ON p.cpf_cliente= c.cpf
GROUP BY id_cliente
ORDER BY data_criao
II. data_nascimento
III. valor-divida
Vale a pena indexar para consultas que comecem pelo primeiro campo e
busque os outros campos, em ordem. Entretanto, no proveitoso para
ndices que comeam pelo meio.
Na dvida sobre se vale a pena indexar ou no, pense no seu ndice como
um sumrio de um livro. Onde apenas as pginas mais procuradas
(captulos) so apresentadas. Em outras palavras, em um livro voc no ir
indexar cada palavra, certo? Caso contrrio, o sumrio ir perder o seu
sentido.
Particionamento x Consultas
Ao utilizar particionamento, importante que todas as consultas
especifiquem o valor da coluna utilizada na expresso de
particionamento.