Сгенерированные запросы linq кэшируются эффективно SQL Server 2008?
или лучше использовать хранимые процедуры с linq или что относительно представления и затем использования скомпилированных запросов linq... мнения?
удачи
акцент здесь идет "эффективно", и или является этим лучше....
т.е. представления кэшируются хорошо SQL-сервером, и затем использующий linq на представлении....
Вдобавок к уже полученным ответам, согласно Дэмиену Гварду, в поставщиках LINQ to SQL и EF LINQ есть сбой, из-за которого не удается последовательно установить переменную длину для запросов, включающих строковые параметры.
http://damieng.com/blog/2009/12/13/sql-server-query-plan-cache
По-видимому, это исправлено в .NET 4.0.
В прошлом я писал хранимые процедуры вместо запросов LINQ, в основном для сложных запросов, подобных отчетам, а не для простого CRUD, но только после профилирования моего приложения.
L2S просто передает запросы в SQL Server 2008. Таким образом, они будут кэшироваться или не кэшироваться, как любой другой запрос, отправленный любым другим процессом. . Тот факт, что запрос Linq компилируется, не влияет на то, как SQL Server обрабатывает запрос.
Запросы, которые генерирует LINQ, являются обычными SQL-запросами, такими как ваши собственные SQL-запросы, созданные вручную, и они подчиняются тем же правилам: если текст запроса идентичен (до последней запятой и пробелов), то текст запроса ранее, скорее всего, его план выполнения запроса мог быть кэширован и, следовательно, его можно было повторно использовать.
Дело в том, что текст запроса должен быть абсолютно идентичным - если хотя бы один пробел отличается, SQL Server считает его новым запросом и, таким образом, проходит полный процесс синтаксического анализа, анализа, поиск плана запроса и его выполнение.
Но в основном да - запросы, отправленные LINQ, будут кэшироваться и повторно использоваться - если они соответствуют этим критериям!