quarta-feira, 17 de março de 2010

MySQL: Otimização de Consultas

* Artigo do site iConnect.

Atualmente as aplicações exigem cada vez mais processamento de dados de maneira eficiente e rápida. E para alcançar esse objetivo, um ponto fundamental é a maneira de realizar consultas, atualizações, inserções e exclusões em um banco de dados. Devemos adotar a melhor estratégia para minimizar o tempo em que serão realizadas essas SQLS. Pretendo mostrar nesse artigo, através de exemplos práticos, algumas boas estratégias a serem adotadas.

Realizei alguns testes, utilizando o phpMyadmin¹, em um computador que possui a seguinte configuração:
Processador AMD Atlon X2, 2GB memória RAM DDR2, 120GB HD e memória cache 2MB, com o sistema operacional XP.

De início registrei no meu Banco de Dados 30 mil dados, sendo que a tabela 'tbteste' continha as colunas nome e idade. Esse banco de dados com 30 mil registros não se compara com a quantidade de dados que são armazenados em um bd de grandes empresas, que possuem bancos com 1GB ou ate mesmo 1PETABYTE de dados armazenados. Por mais que esse banco de dados possua poucos registros, será perceptível, através dos testes, a diferença de tempo entre uma SQL e outra.

Então vamos lá:
Pesquisa por índice x Pesquisa por registro

Em uma consulta, sempre que possível, dê preferência em realizar a pesquisa por índice no lugar de pesquisar por outro registro.
Por ex:

SELECT * FROM 'tbteste' WHERE id = 18301

Consulta levou 0.0007 segundos

SELECT * FROM 'tbteste' WHERE nome = 'Samyr'

Consulta levou 0.0103 segundos

Obs: Nesse exemplo o id 18301 possui o dado 'Samyr'.

Ao fazer a consulta em minha tabela 'tbteste' pelo 'id', o tempo de pesquisa foi de 0.0007 segundos, e a mesma consulta pela coluna 'nome' o tempo de resposta foi de 0.0103 segundos.
Evite conversões

Ao realizar uma SQL, evite utilizar aspas ('') em registros que são variáveis inteiras. Ao utilizar essas aspas, o SGBD(Sistema gerenciador de banco de dados), perderá tempo convertendo esses caracteres de char(ao colocar aspas a variável do tipo inteiro passa a ser do tipo char) para inteiro.
Ex:

SELECT * FROM 'tbteste' WHERE idade = 20

Consulta levou 0.0088 segundos

SELECT * FROM 'tbteste' WHERE idade = '20'

Consulta levou 0.0105 segundos
Devido a conversão, de char para int, o segundo select demorou mais tempo que o primeiro.
Tamanho dos registros

Evite colocar em variáveis, um tamanho maior do que o necessário. Se o campo é do tipo varchar e o tamanho suficiente é 30, não tem o porquê de colocar o tamanho 200.
Ex:

SELECT nome FROM tbteste WHERE nome = 'samyr'

varchar(200) - campo nome com tamanho 200.
Consulta levou 0.0202 segundos
varchar(30) - campo nome com tamanho 30.
Consulta levou 0.0175 segundos

Com o campo nome de tamanho 200 a consulta demorou mais tempo do que com tamanho 30.

Essas práticas são muito simples de serem realizadas, e fazem grande diferença em aplicações que possuem grande quantidade de dados armazenados em seus bds.
Espero que tenham gostado desse artigo. E até a próxima....

¹ phpMyAdmin é um programa de computador desenvolvido em PHP para administração do MySQL pela Internet. A partir deste sistema é possível criar e remover bases de dados, criar, remover e alterar tabelas, inserir, remover e editar campos, executar códigos SQL e manipular campos chaves.
Fonte: http://pt.wikipedia.org/wiki/PhpMyAdmin

Fonte: Oficina da Net

0 comentários:

Postar um comentário

Twitter Delicious Facebook Digg Stumbleupon Favorites More