我有兩個表,一個父「Point」和一個孩子「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等時),初始查詢非常快,但是通過「Values」屬性迭代非常緩慢。 SQL Profiler告訴我,對於「points」中的每個值,IQueryable都會執行另一個查詢。
我如何得到這是一個查詢?
有趣的是,當連接未註釋時,初始查詢變得非常緩慢。
謝謝。最終,因爲可以使用FK將第二個表拉出來,我將它作爲單獨的查詢並將其轉換爲List,然後在內存列表中執行每次迭代查詢。結果非常快。 – 2010-08-18 08:12:28