【问题标题】:SQL: How to increase SQL query performance of a view?SQL:如何提高视图的 SQL 查询性能?
【发布时间】:2020-09-17 01:13:16
【问题描述】:

问题:

  • 我的销售周视图的更新和查询(使用 Power BI)需要很长时间(>30 分钟),我想了解如何改进它

当前设置:

  • Sales Daily View:包含两个主要销售表和一个日期表的聚合和联接的视图
  • Sales Weekly View:加入“Sales Daily View”、一个销售表和两个维度表并包含大量逻辑(主要是聚合)的视图

如果您知道如何简化此操作并提高视图的性能,请告诉我。

【问题讨论】:

  • 一般来说,SQL 视图的性能与底层查询一样好。因此,您可以考虑调整这些查询。你的视图是物化视图吗?
  • 正如蒂姆提到的 - 看起来像基础数据集的索引或连接问题

标签: sql view database-indexes powerbi-datasource


【解决方案1】:
  1. 正如@Tim 提到的,视图将具有与基础查询相同的性能。因此请检查您是否可以优化视图中的 Select 查询。
  2. 您可以尝试对视图中的某些聚合结果使用公用表表达式 (CTE),而不是在选择本身中计算,然后将主查询与 CTE 连接起来。
  3. 如果您能够根据需要每天/每周刷新它,您可以尝试使用物化视图,然后在物化视图上创建索引并将其用作 Power BI 中的源。

【讨论】:

  • 感谢您的回答。 1& 2:我已经将 CTE 用于所有聚合,并在最后使用最终选择语句。 3:视图每周更新一次,因此调查索引选项可能是有意义的
  • 告诉我进展如何。
  • 在我的情况下似乎无法使用物化视图,因为它是: - 基于另一个视图 - 包含许多外部连接 - 包含 DISTINCT 语句 您还有其他建议吗?
  • 你检查索引了吗?此外,可能值得查看执行计划。在我查看底层表的视图定义和结构之前,我真的不能说。 docs.microsoft.com/en-us/sql/relational-databases/performance/…
  • 据我了解(基于这篇帖子link,实现视图的方法是创建一个符合几个严格要求的索引视图,例如: - 不是视图的视图 - 不是有不同的语句 - 没有外部连接
猜你喜欢
  • 2016-01-17
  • 1970-01-01
  • 2023-03-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-05-26
相关资源
最近更新 更多