IQueryable查询性能调优

时间:2013-10-28 11:27:00

标签: c# linq entity-framework iqueryable

我想就如何使这个简单的LINQ代码尽可能快速有效地提出一些建议

  

tbl_WatchList包含51996行

     

根据VS2012测试资源管理器,以下测试需要2秒才能运行

    [TestMethod]
    public void TestRemoveWatch()
    {
        using (var DB = new A4C_2012_devEntities())
        {
            var results = DB.tbl_WatchList.OrderByDescending(x => x.ID).Take(1);
            int WatchID = results.AsEnumerable().First().ID;
            Assert.IsTrue(WatchList.RemoveWatch(WatchID));
        }
    }

2 个答案:

答案 0 :(得分:2)

您无需对整个集合进行排序。

int WatchID = DB.tbl_WatchList.Max(wl => wl.ID);

应该足够了。

答案 1 :(得分:1)

要进行优化,请执行以下操作:

  • 使用分析工具(例如SQL分析器)查看将哪些SQL查询发送到数据库,以及查看这些查询的真实性能。
  • 选择执行速度慢的查询并手动分析查询计划,或使用Index Tuning Advisor查看缺少的索引。
  • 添加缺失的索引。