【问题标题】:Page taking 15s to load due to SQL queries由于 SQL 查询,页面加载需要 15 秒
【发布时间】:2016-11-10 15:09:39
【问题描述】:

我有一个仪表板,其中显示使用 5 个单独的 SELECT count (*) 查询计算的 5 个实时总计。这些结果被插入到页面中

       Using rdr As SqlDataReader = db.ExecDataReader(qry1)
            rdr.Read()
            qa1.InnerText = rdr(rdr.GetName(0))
        End Using

        Using rdr As SqlDataReader = db.ExecDataReader(qry2)
            rdr.Read()
            qa2.InnerText = rdr(rdr.GetName(0))
        End Using

有什么方法可以减少加载时间?我尝试使用 UNION 加入所有查询,并且在 SQL SMS 中它需要几秒钟的时间,但我不知道如何从结果中提取每个“行”。

也就是说,在 Server Management Studio 中仍然需要 12 秒,这对于仪表板来说仍然是不可取的。我的双手被我们的基础设施束缚了吗?

【问题讨论】:

  • 好吧,您已经确定了响应时间缓慢的原因 - 查询成本很高。您的首要任务是尝试优化这些查询 - 检查缺失的索引等。考虑到这一点,目前的问题太模糊,无法提供帮助。
  • 创建一个包含所有 5 个查询的 usp,此 usp 将返回您的数据集,它是 5 个表的集合,然后您可以使用这些表进行进一步处理。
  • 您需要 100% 准确的结果吗?您的表格是更新还是仅插入?你使用 LOB 吗?
  • SQL Server Count is slow的可能重复

标签: sql asp.net sql-server performance


【解决方案1】:

听起来计数查询需要优化。如果它们运行得那么慢,要么你有很多数据要计算,要么有一个复杂的查询没有得到适当的优化。

您需要发布有关表结构和您使用的查询的更多详细信息,以便我们能够帮助解决查询缓慢的可能原因。

【讨论】:

    【解决方案2】:

    在内存或暂存表中缓存计数。这将优化仪表板调用。接下来,根据您的要求找到更新舞台的最有效方法。可能会在添加新项目时更新阶段,或者创建一个以间隔更新阶段的后台进程。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-04-19
      • 2019-08-01
      • 2019-02-18
      • 1970-01-01
      • 2017-05-25
      • 2019-02-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多