Una vez te inicias en cualquier orm, surge la necesidad de "ajustar" cada vez más tus consultas, tal como harías con el sql tradicional, para hacerlas más eficientes. Aquí entran estas dos técnicas denominadas Table Splitting y Entity Splitting.
¿Qué es Table Splitting y como usarlo?
Cuando haces una consulta con Entity Framework a la base de datos, éste te mapea automáticamente los registros a entidades de tu sistema. Ésto es algo muy cómodo y eficiente en muchas ocasiones, pero cuando las tablas empiezan a tener muchos campos o, se hacen consultas que reciben muchos registros, el rendimiento empieza haberse afectado.
Para evitar ésto, puedes dividir ciertas tablas que consideres que van a ser muy usadas, pero en las que muchas veces sólo necesitas parte de sus datos.
Por ejemplo, si tienes un tabla de usuarios donde se hacen muchas consultas y sólo necesitas el ID y el nombre de usuarios. Podrías dividir esa tabla en una entidad "Person", y el resto de los campos en otra denominada personDatos. Con ésto, evitarías recoger todos los datos innecesarios como dirección, teléfono, población, etc... a no ser que los necesites explícitamente.
En el ejemplo vemos como hemos divido la entidad en dos, para ello basta con crear la nueva entidad, cortar y pegar los campos que deseemos.
Después, sencillamente habría que asociar estas dos entidades como si fueran dos tablas independientes:
¿Qué es Entity Splitting y como usarlo?
Entity Splitting sería el caso opuesto, es decir, teniendo dos o más tablas, queremos asociarlas todas en una única entidad para su posterior manejo. Obviamente estas tablas deben estar relacionadas.
Para ello, podemos usar directamente el interfaz gráfico de Entity Framework (.edmx), cortando y pegando los campos que queremos insertar. Después, eliminamos la entidad sobrante ya que ya no nos es de utilidad.
Conclusión acerca del rendimiento con entity framework
Como he comentado en otros artículos, los ORMs son herramientas de trabajo muy potentes que nos facilitan en gran medida el trabajo diario. Pero hay que saber usarlos, ya que sino pueden afectar severamente el rendimiento de la aplicacion cuando la base de datos va creciendo como pudimos ver tambien en este otro articulo: ¿qué es el Lazy Load?.