У меня есть две таблицы, одна родительская «точка» и один дочерний «PointValue», соединенный одним внешним ключом «PointID», создающий отношение «один ко многим» в SQL Server 2005.Как повысить производительность этого простого LINQ?
У меня есть LINQ запрос:
var points = from p in ContextDB.Points
//join v in ContextDB.PointValues on p.PointID equals v.PointID
where p.InstanceID == instanceId
orderby p.PointInTime descending
select new
{
Point = p,
Values = p.PointValues.Take(16).ToList()
};
Как вы можете видеть из закомментировано присоединиться и «ценность» назначение, таблица «Точка» имеет отношение к «PointValue» (под названием «Точка» и «PointValues» по LINQ).
При повторении через «var points» IQueryable (скажем, при привязке к GridView и т. Д.) Первоначальный запрос выполняется очень быстро, однако повторение через свойство «Значения» происходит очень медленно. SQL Profiler показывает мне, что для каждого значения в «точках» IQueryable выполняется другой запрос.
Как получить этот запрос?
Интересно, что первоначальный запрос становится очень медленным, когда соединение раскомментировано.
Спасибо. В конечном счете, поскольку вторую таблицу можно вытащить, используя только FK, я сделал это как отдельный запрос и преобразовал его в список, а затем выполнил запросы на итерацию в списке в памяти. Это оказалось очень быстрым. –