Pergunta

Vamos dizer que eu tenho um objeto que é bastante complexo. Uma vez que é tão complexo, é preciso um pouco a carga do banco de dados. Agora vamos dizer que meus usuários querem uma grade que mostra todos estes objetos, e eu sei que se eu fornecer o desempenho não será desejável. Estou tentando colocar o dedo sobre a melhor maneira de lidar com isso. Até agora eu tenho duas idéias:

Implementar carregamento lento: Eu realmente não precisa de todo o objeto para exibir a grade. Eu não tenho certeza se quero ir por esse caminho aqueles porque qualquer outro lugar terá todo o objeto carregado e eu não quero mudar drasticamente minha arquitetura para as redes.

retornar um conjunto de registros, concebidas especificamente para o meu grade: Esta é a maneira que eu estou inclinado. Basicamente eu gostaria de voltar um DataSet ou objeto simplesmente plana. Meu procedimento armazenado pode fazer as relações de dados para retornar o conjunto de registros como desejado.

Existe alguma outras abordagens que eu poderia querer olhar? Eu não fiz nenhum grades reais anteriormente e queria ter certeza de que fiz certo da primeira vez. ninguém pode vir até com quaisquer desvantagens da minha segunda ideia?

Foi útil?

Solução

Eu acho que sua intuição está correta que a sua segunda forma é mais correta. Quando seu objeto completo é tão grande que é uma carga significativa para carregá-lo, você está certo para tentar minimizar a carga total, reduzindo o tamanho dos dados retornados. Parece que o objeto pode se beneficiar de um pouco de refatoração, bem como, no entanto; se é realmente tão grande que é como um incômodo para carga, poderia beneficiar de refatoração-lo em componentes menores?

Outras dicas

Gostaria de criar uma entidade de luzes que representa os campos que você precisa exibir em sua grade.

MAS! Eu só faria isso se a grade é somente leitura. Se você precisa de objetos alter deste grid, então você acaba com uma camada de tradução estranha que poderia acabar por ser há melhor para o desempenho. Nesse caso, eu preguiçoso carga você objetos de domínio. Há outras maneiras que você pode espremer um pouco melhor desempenho fora do que puxar os dados, como ajustes DB (índices, verificando a fragmentação dos índices, etc. Basta verificar o plano de execução depois de escrever a consulta).

Você também pode implementar a paginação em sua proc se você estiver retornando uma grande lista desses objetos pesados ??para que você só tem 10 ou 20 de cada vez, eo usuário tem várias páginas para navegar. Ao invés de carregar a lista inteira e página no código, você pode adicionar uma coluna para rownumber e passar o início número da linha e no final que você quer puxar como parâmetros para o proc.

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