2
respostas

Como fica a questão da performance para tabelas muito grandes?

Se a tabela for muito grande, com milhões de registros por exemplo, a primeira consulta supostamente retorna toda a tabela, as demais executariam filtros no resultado da primeira consulta. É isso mesmo? Nesse caso, a consulta não seria ineficiente?

Eu não poderia combinar todos os filtros em apenas uma consulta utilizando o "ou"? O código abaixo poderia ser usado? E caso possa, seria mais eficiente?

var busca = from p in contexto.Produto where ((p.Nome == nome) || IsNullOrEmpth(nome)) && ((p.Preco > preco) || preco == 0) && ((p.Categoria.Nome == categoria) || IsNullOrEmpth(categoria)) select p

2 respostas

Oi Vicente, vamos esperar um especialista para comentar aqui, mas com certeza existe um jeito de fazer a query aplicando os filtros direto no sql! Caso contrário fica inviável mesmo :).

Na verdade a resposta foi dada no decorrer do módulo!! Segundo foi colocado lá, o comando só é enviado ao banco quando a instrução ToList é executada, ou seja, de alguma forma, o Entity Framework mescla os filtros informados e executa somente no final. Se for isso mesmo então o problema que eu relatei não ocorre.