【问题标题】:Linq-to-SQL very slow materializationLinq-to-SQL 实现非常慢
【发布时间】:2016-01-12 13:06:41
【问题描述】:

我的.aspx 页面的加载时间很短,我目前正在尝试对其进行优化。首先我使用Visual Studio Performance AnalyzerSQL Server Profiler 来查找慢的地方,然后我将Stopwatches 直接放在我的代码中。

不太明白是怎么回事,不过貌似整个app中最慢的方法就是物化方法了,但是只有三个小表才慢:

internal T[] GetTableAsArray<T>() where T : class
{
    return dataContext.GetTable<T>().ToArray();
}

第四张桌子还可以。 SQL Server Profiler 显示零 Duration 的 SQL 查询,但我的 Stopwatch 显示 677ms、884ms、355ms 和 8ms。所有表格都有约 50 行和约 7 列。

有什么想法吗?我应该在哪里挖?

【问题讨论】:

  • “小”怎么样?有多少记录?顺便说一句,你为什么打电话给ToArray(),出于好奇?以允许 linq-to-sql 延迟加载的方式进行迭代通常是一种好习惯。
  • Small 是大约 50 行和大约 7 列的简单数据。我找到了速度变慢的原因,不幸的是,我需要重新设计我的应用程序才能解决这个问题。
  • 我将其添加为下面的答案。

标签: c# performance linq-to-sql


【解决方案1】:

先生们,复杂的继承就是答案。此处描述了相同的问题:.NET Linq to SQL Performance Issue with Inherited Discriminators。我的慢表有孩子,快表没有。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多