Pregunta

No estoy seguro de dónde llevar esta información a la tripulación subsónica mientras eliminaban sus foros, y dijeron que use StackOverflow, así que aquí vamos.

He estado luchando por lograr el máximo rendimiento con un ORM. Me encanta Subsonic, y su inserción masiva, actualización, elimina el marco de entidad de borros en este contexto, sin embargo, para lecturas simples rectas, EF sopla subsonic fuera del agua con un rendimiento 5x más rápido.

He desnudado ambos, eliminé el seguimiento de cambios, las propiedades extranjeras, las propiedades de navegación, todo a POCO.

EF ejecuta una selección simple de 1M filas en aproximadamente 4.8, el Linq subsónico está tomando 5x que ...

Mirando el perfilador SQL, la llamada es ligeramente diferente: Marco de entidad: SELECT TOP (1000000) [c].[Id] AS [Id], [c].[ProjectIDL] AS [ProjectIDL], [c].[DescriptorIDL] AS [DescriptorIDL], [c].[FieldIDL] AS [FieldIDL], [c].[Data] AS [Data], [c].[OptionId] AS [OptionId] FROM [dbo].[DescriptorFieldValues] AS [c]

Subsónico:SELECT TOP (1000000) [t0].[Data], [t0].[DescriptorIDL], [t0].[FieldIDL], [t0].[Id], [t0].[OptionId], [t0].[ProjectIDL] FROM [dbo].[DescriptorFieldValues] AS t0

SQL Profiler está ejecutando un rastro y muestra una diferencia de duración masiva aquí.
Revisé el inicio de sesión de auditoría antes de ambas consultas y son idénticas ...

Si ejecuto la misma consulta en SQL Management Studio, se necesitan 11 segundos para ambas consultas

Mirando la fuente subsónica 3.04, no puedo entender dónde haría el ajuste para que coincida con EF, pero es la sintaxis de la consulta aquí que realmente hace una gran diferencia, o hay alguna magia que no estoy al tanto de ?

¡Gracias por tu ayuda!

No hay solución correcta

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top