Otimização do MySQL usando índices
Um índice de banco de dados é uma estrutura de dados que melhora a velocidade das operações em uma tabela.
Toda vez que seu aplicativo da Web executar uma consulta de banco de dados, o banco de dados examinará todas as linhas da tabela para encontrar as que correspondem à sua solicitação. À medida que as tabelas do banco de dados aumentam, um número crescente de linhas precisa ser inspecionado a cada vez, o que pode diminuir o desempenho geral do banco de dados e, respectivamente, do aplicativo.
Os índices do MySQL resolvem esse problema, pegando dados de uma coluna na sua tabela e armazenando-os em ordem alfabética em um local separado chamado índice. Mais sobre isso pode ser encontrado aqui.
Os índices podem ser criados facilmente via phpMyAdmin no cPanel. Abaixo poderá encontrar um exemplo de tal índice:
Vamos pegar uma tabela de exemplo chamada "sample" com apenas duas linhas - "number" e "employee". Se executar uma consulta SQL simples, como:
SELECT * FROM sample WHERE number = 4;
O MySQL verificará todos os registros e retornará apenas aquele que tiver seu valor numérico definido como 4.
Mas se tiver vários milhares de entradas, por exemplo, esta será uma consulta lenta. Neste caso, temos um campo único - "number". Portanto, podemos criar um índice para isso. A indexação criará um registro interno que é salvo pelo serviço MySQL. Isso pode ser feito com a seguinte consulta:
ALTER TABLE sample ADD INDEX (number);
Depois que esse índice for definido, na próxima vez que quiser obter as informações para o funcionário número 4, o serviço irá diretamente para ele usando o índice e retornará as informações muito mais rapidamente.
Este é apenas um exemplo muito básico. Para bancos de dados maiores, a diferença no tempo de carregamento pode ser significativa. A indexação do banco de dados pode diminuir drasticamente o tempo de carregamento de seus aplicativos da web.
Há outra consulta que poderáusar para aumentar a velocidade de carregamento do seu banco de dados:
OPTIMIZE TABLE sample;