Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
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
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.
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.
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
Í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.