Не уверен, где передать эту информацию дозвуковой команде, когда они закрывали свои форумы и говорили, что используют stackoverflow, так что мы идем.
Я изо всех сил пытался достичь максимальной производительности с помощью ORM. Мне нравится Subsonic, и его массовая вставка, обновление, удаление уничтожает Entity Framework в этом контексте, однако для простых простых операций чтения EF выдувает дозвуковые сигналы из воды с 5-кратной скоростью.
Я сократил оба, удалил отслеживание изменений, внешние свойства, навигационные свойства, все до poco.
EF выполняет простой выбор из 1M строк примерно за 4.8, SubSonic Linq берет 5x, что ...
Глядя на профилировщик SQL, вызов немного отличается:
Entity Framework: 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]
SubSonic: SELECT TOP (1000000) [t0].[Data], [t0].[DescriptorIDL], [t0].[FieldIDL], [t0].[Id], [t0].[OptionId], [t0].[ProjectIDL]
FROM [dbo].[DescriptorFieldValues] AS t0
Профилировщик SQL выполняет трассировку и показывает существенную разницу в продолжительности.
Я проверил логин аудита перед обоими запросами, и они идентичны ...
Если я выполняю один и тот же запрос в sql management studio, для обоих запросов это займет 11 секунд
Глядя на дозвуковой источник 3.04, я не могу понять, где бы я сделал корректировку, чтобы она соответствовала EF, но действительно ли синтаксис запроса здесь действительно имеет большое значение, или происходит какое-то волшебство, не в курсе?
Спасибо за вашу помощь!