Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

maurolucio

Qual a melhor maneira de usar índices ?

Recommended Posts

Boa tarde a todos.

 

Depois de verificar que quase todas as minhas aplicações ficam lentas com o aumento de registros no banco, deparei-me com a solução mais provável: Usar índices.

 

Porém surge com isso um dúvida: Em que momento devo usar o índice?

 

Em minhas buscas verifiquei que alguns aconselham a criar o índice no banco e outros aconselham a criar o índice de acordo com a consulta.

 

Estou fazendo da seguinte forma:

 

 

/**
* Cria um Índice
* campos referenciados na claúsula WHERE 
* campos usados na claúsula JOIN
*/
$resultINDEX = $mysqli->query("CREATE INDEX NomeDoIndice ON NomeDaTabela(NomeDoCampo(4));");

/**
* Minha query
*/
$result = $mysqli->query("MinhaQuery");


/**
* Exclui um Índice
*/
$resultINDEX = $mysqli->query("DROP INDEX NomeDoIndice ON NomeDaTabela");


 

Quando faço minha consulta eu crio o índice de acordo com minha necessidade, executo minha query e depois excluo o índice.

 

Esta é a maneira correta ou existe outro modo mais funcional?

 

Obrigado a todos.

 

Mauro Lúcio

Compartilhar este post


Link para o post
Compartilhar em outros sites

Índices podem tornar suas consultas mais rápidas mas tornam as atualizações (quando envolvem colunas do índice) mais lentas.

 

É o "cobertor curto", questão de pesar o que é melhor.

 

Não gosto da solução de criar índices temporários, mas em algumas situações ela pode ser útil.

 

Se a consulta é frequente crie um índice permanente.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Isto não faz muito sentido.

 

Suas consultas mudam? Digo, elas são criadas em tempo de execução? Você não tem como saber o que será filtrado ou pesquisado?

Se os índices forem sempre utilizados, não há motivos para remove-los.

 

Aprenda a utilizar o comando EXPLAIN. http://dev.mysql.com/doc/refman/5.0/en/explain.html

Esse comando vai te mostrar muita coisa, principalmente no que diz respeito a criação de índices, mas é necessário entender as mensagens que ele passa.

 

Criar o índice de acordo com a consulta e persistir, não ficar criado e dropando.

Compartilhar este post


Link para o post
Compartilhar em outros sites

O problema de criar índice é que é preciso fazer um full table scan para montá-lo, se não se vai manté-lo em geral a consulta mesmo que lenta é menos custosa.

 

Como disse o Prog não faz muito sentido.

 

Em algumas poucas situações vale a pena a criação de índices temporários, mas em geral são raras.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Como eu não sabia como utilizar os índices encontrei um tutorial que indicava a criação de temporários, mas agora entendi que é melhor criá-los permanentemente.

 

vou pesquisar sobre o EXPLAIN também.

 

Mas já comecei a criar os índices permanentes.

 

Todas as minhas dúvidas foram sanadas, obrigado a Prog e Motta.

 

Abraço a todos

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.