Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

É ruim para o desempenho selecionar todas as colunas?


A questão aqui não é tanto do servidor de banco de dados, mas apenas da comunicação da rede. Ao selecionar todas as colunas de uma vez, você está dizendo ao servidor para retornar a você, todas as colunas de uma vez. Quanto às preocupações com IO e tudo isso, elas são abordadas muito bem na pergunta e resposta que @Karamba deu em um comentário:selecionar * vs selecionar coluna . Mas para a maioria dos aplicativos do mundo real (e eu uso "aplicativos" em todos os sentidos), a principal preocupação é apenas o tráfego de rede e quanto tempo leva para serializar, transmitir e desserializar os dados. Embora realmente, a resposta é a mesma de qualquer maneira.

Portanto, retirar todas as colunas é ótimo, se você pretende usá-las todas, mas isso pode representar muita transferência de dados extra, principalmente se você armazenar, digamos, strings longas em suas colunas. Em muitos casos, é claro, a diferença será indetectável e é principalmente uma questão de princípio. Não todos, mas uma maioria significativa.

É realmente apenas uma troca entre sua preguiça mencionada acima (e acredite, todos nós nos sentimos assim) agora e o quão importante o desempenho realmente é.

Dito isso, se você fazer pretende usar todos os valores da coluna, é muito melhor recuperá-los todos de uma vez do que preencher um monte de consultas.

Pense nisso como fazer uma pesquisa na web:você faz sua pesquisa, encontra sua página e só precisa de um detalhe. Você pode ler a página inteira e saber tudo sobre o assunto, ou pode simplesmente pular para a parte sobre o que está procurando e pronto. O último é muito mais rápido se isso é tudo o que você deseja, mas se você tiver que aprender sobre os outros aspectos, seria muito melhor lê-los da primeira vez do que ter que fazer sua pesquisa novamente e encontrar o site para falar sobre isso.

Se você não tiver certeza se precisará dos outros valores de coluna no futuro, essa é sua decisão como desenvolvedor para o caso em que é mais provável.

Tudo depende de qual é seu aplicativo, quais são seus dados, como você os está usando e quão importante é o desempenho realmente é para você.