|
SELECT * FROM Tabela WHERE ...
Tecnicamente não há nada de errado com a sintaxe acima, porém o uso desta
consome recursos preciosos de sua aplicação.
Quando você faz um SELECT * em uma tabela de seu banco de dados, este
banco espera o retorno de todos os campos existentes na tabela. O problema
é que raramente é necessário executar uma consulta em todos os campos de
uma tabela, gerando dados desnecessários e ocasionando a queda de
performance no banco de dados. Isto ocorre principalmente se sua aplicação
e seu banco de dados estão em servidores diferentes, pois os dados
desnecessários são transferidos em toda a rede.
Geralmente, muitos dizem que em uma tabela com pouco registros e poucos
campos não há com o que se preocupar, certo? Errado. Veja o exemplo
abaixo:
Temos uma tabela chamada "Funcionarios", assumiremos que a mesma contém
alguns campos como: id, Nome , sobrenome, setor e telefone. Suponhamos que
você queira o retorno de uma listagem completa de todo os dados desta
base. Em código, teremos algo parecido com isso:
SELECT * From Funcionarios
Mas na verdade o que realmente se deseja é isso:
SELECT id, Nome, Sobrenome, Setor, Telefone FROM Funcionarios
Verifique que não há diferença entre os dois exemplos, mas se daqui há
seis meses, você decide inserir nesta tabela um campo contendo a foto de
cada funcionário, você terá que alterar a query em questão. Caso você
utilize o exemplo errado, toda vez que você acessar a página que contém
este código o servidor estará transferindo todas as imagens contidas em
todos os registros mesmo que você só queira o retorno de um registro,
transferindo assim dados absolutamente desnecessários.
Sabemos que uma alteração como esta consome alguns segundos, mas esta boa
prática poderá reverter estes segundos "perdidos" em ganho de performance.
|