benefício de desempenho quando a consulta SQL é limitado vs chamando toda linha?

StackOverflow https://stackoverflow.com/questions/430605

  •  08-07-2019
  •  | 
  •  

Pergunta

Como muito de um benefício de desempenho está lá, selecionando único campo obrigatório na consulta em vez de consultar toda a linha? Por exemplo, se eu tiver uma fila de 10 campos, mas só precisa de 5 campos no visor, vale a pena consulta apenas aqueles 5? qual é a vantagem de desempenho com esta limitação vs o risco de ter de voltar e adicionar campos na consulta sql posteriormente, se necessário?

Foi útil?

Solução

Não é apenas o aspecto de dados extra que você precisa considerar. Seleccionar todas as colunas nega a utilidade dos índices de cobertura, uma vez que uma pesquisa de indicador para o índice agrupado (ou quadro) será necessária.

Outras dicas

Depende de quantas linhas são selecionadas, ea quantidade de memória que esses campos extras consumir. Ele pode correr muito mais lento se os campos vários texto / bolhas estão presentes, por exemplo, ou muitas linhas são selecionadas.

campos Como está acrescentando mais tarde um risco? modificar consultas para atender requisitos de mudança é uma parte natural do processo de desenvolvimento.

A única vantagem que eu sei de nomear explicitamente suas colunas em sua instrução select é que, se uma coluna de seu código está usando fica renomeado sua instrução select irá falhar antes de seu código. Ainda melhor se sua instrução select é dentro de um proc, o seu proc eo script DB não compilar. Isto é muito útil se você estiver usando ferramentas como edição VS DB para compilar / verificar scripts de DB. Caso contrário, a diferença de desempenho seria insignificante.

O número de campos recuperados é um efeito de segunda ordem sobre o desempenho em relação à grande sobrecarga do pedido SQL em si - sair do processo, através da rede para outro host, e, possivelmente, para o disco em que o anfitrião tem muitos mais ciclos de pá alguns bytes extras de dados.

Obviamente, se os campos extras incluem um blob megabyte a equação é distorcida. Mas minha experiência é que a transação sobrecarga é da mesma ordem, ou maior, do que os dados reais retreived. Lembro-me vagamente de muitos anos atrás do que um "vazio" pedido NOP TNS é de cerca de 100 bytes sobre o fio.

Se o servidor SQL não é a mesma máquina a partir da qual você está consultando, em seguida, selecionando as colunas extras transferências mais dados sobre a rede (que pode ser um gargalo), não esquecendo que ele tem para ler mais dados do disco , alocar mais memória para armazenar os resultados.

Não há uma coisa que iria causar um problema em si, mas adicionar as coisas e todos eles problemas de desempenho juntos provocam. Cada pequena ajuda quando você tem lotes de qualquer dúvida ou de dados.

O risco Eu acho que seria que você tem que adicionar os campos à consulta posterior, que possivelmente significa alterar o código, mas, em seguida, você geralmente tem que adicionar mais código para manipular campos extras de qualquer maneira.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top