Entity Framework: Otimizar consultas SQL geradas
Olá, pessoal. Tudo bem com vocês?
Tenho utilizado o Entity Framework e ele me proporciona grande facilidade para manipular o banco de dados, o que é ótimo, pois não preciso escrever SQL. No entanto, recentemente passei a analisar as instruções SQL que são geradas por ele e acredito que não são as melhores. Ou seja, para certas operações de consulta básica, por exemplo, ele gera um SELECT bem complexo, o que normalmente não faríamos manualmente.
Você já observaram isso? Consideram isso um problema? Sabem como melhorar?
Obrigada.
Tenho utilizado o Entity Framework e ele me proporciona grande facilidade para manipular o banco de dados, o que é ótimo, pois não preciso escrever SQL. No entanto, recentemente passei a analisar as instruções SQL que são geradas por ele e acredito que não são as melhores. Ou seja, para certas operações de consulta básica, por exemplo, ele gera um SELECT bem complexo, o que normalmente não faríamos manualmente.
Você já observaram isso? Consideram isso um problema? Sabem como melhorar?
Obrigada.
Rachel Andrade
Curtidas 0
Melhor post
Joel Rodrigues
26/07/2017
Olá, Rachel. Tudo bem?
Realmente o Entity Framework facilita o trabalho com o banco, mas pode gerar algumas consultas SQL "estranhas" mesmo. Para otimizar certas consultas você pode criar índices no banco, já para ter total controle sobre o SQL, a melhor opção mesmo é escrever sua consulta.
Realmente o Entity Framework facilita o trabalho com o banco, mas pode gerar algumas consultas SQL "estranhas" mesmo. Para otimizar certas consultas você pode criar índices no banco, já para ter total controle sobre o SQL, a melhor opção mesmo é escrever sua consulta.
GOSTEI 2
Mais Respostas
Rachel Andrade
25/07/2017
Oi, Joel. Obrigada pela ajuda.
Recentemente ouvi falar bastante de um framework chamado Dapper. Porém vi que ele é chamado de micro-ORM, sabe me dizer o porquê desse "micro"? Ele não substitui o EF por total?
Recentemente ouvi falar bastante de um framework chamado Dapper. Porém vi que ele é chamado de micro-ORM, sabe me dizer o porquê desse "micro"? Ele não substitui o EF por total?
GOSTEI 0
Joel Rodrigues
25/07/2017
Oi, Rachel.
Esses "micro-ORM" são chamados assim porque eles não têm todas as funcionalidades de um framework maior como Entity Framework e NHibernate. Normalmente eles fazem o mapeamento de forma mais "manual", ou seja, você precisa escrever suas consultas SQL e tratar o resultado como classes. Se por um lado pode dar um pouco mais de trabalho para usar, por outro você tem maior liberdade para escrever suas consultas e, logo, garante a melhor performance.
Esses "micro-ORM" são chamados assim porque eles não têm todas as funcionalidades de um framework maior como Entity Framework e NHibernate. Normalmente eles fazem o mapeamento de forma mais "manual", ou seja, você precisa escrever suas consultas SQL e tratar o resultado como classes. Se por um lado pode dar um pouco mais de trabalho para usar, por outro você tem maior liberdade para escrever suas consultas e, logo, garante a melhor performance.
GOSTEI 0
Rachel Andrade
25/07/2017
Entendi, Joel. Nesse caso, se eu precisa realmente escrever as consultas "na mão", posso optar por fazer isso com o EF mesmo, né? Também pensei em utilizar stored procedures, como já vi em uma empresa, dá pra fazer isso no EF?
GOSTEI 0