【问题标题】:IQueryable Query Performance TuningIQueryable 查询性能调优
【发布时间】:2013-10-28 11:26:59
【问题描述】:

我想要一些关于如何使这个简单的 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));
        }
    }

【问题讨论】:

  • 这个问题有什么问题,为什么投反对票?
  • 尝试删除 AsEnumerable。如果您真的想要性能,请一起跳过 EF 和 linq..

标签: c# linq entity-framework iqueryable


【解决方案1】:

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

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

应该足够了。

【讨论】:

    【解决方案2】:

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

    • 使用分析工具(例如 SQL 分析器)查看哪些 SQL 查询发送到数据库,并了解这些查询的实际性能。
    • 选择执行速度慢的查询并手动分析查询计划,或使用索引优化顾问查看您缺少哪些索引。
    • 添加缺失的索引。

    【讨论】:

      猜你喜欢
      • 2016-06-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-05-22
      • 1970-01-01
      • 2016-08-03
      相关资源
      最近更新 更多