【问题标题】:Join a view with another view performance加入一个视图与另一个视图性能
【发布时间】:2017-10-03 18:01:15
【问题描述】:

我正在开发一个 Web 应用程序 (PHP/MySQL),我正在寻找最佳性能。

我正在构建一个视图,在这个视图中我必须连接多个数据,但我想知道,将视图与另一个视图或表连接之间的最佳选择是什么。

更清楚地说,如果我有:

View_1 = Table_A 加入 Table_B

我需要来自 Table_A 和 Table_B 的 View_2 数据,我应该这样做

View_2 = Table_C 连接 View_1 或 View_2 = Table_C 连接 Table_A 连接 表_B

非常感谢

【问题讨论】:

    标签: php mysql sql join view


    【解决方案1】:

    查看具体查询的解释计划。

    联接到视图而不是基础表可能对性能有影响——因为,正如 Atip Roy 解释的那样,执行联接的顺序对性能很重要,并且有一些视图中的连接可能会阻止您对查询中的连接进行最佳排序。

    但这完全取决于您的查询——它可能没有任何区别。

    而且,使用视图还有一个好处:这意味着该视图的逻辑只存储在一个地方。您为我们提供了一个简化的示例,但在现实生活中,视图 1 的代码可能更复杂。如果您在多个地方需要相同的逻辑,最好尽可能避免代码重复。

    所以,我会检查性能是否真的很重要(以及它的重要性)。我宁愿使用视图,除非该选项的性能不可接受。

    【讨论】:

    • 是的,你是对的,但我特别问是因为我不了解数据库引擎逻辑,我的意思是视图可能缓存在某处,并且访问速度比在另一个表中执行相同的连接更快,但感谢您的回答;)
    【解决方案2】:

    继续处理单个表总是一个好主意,如果您使用任何可能减少行数的内部连接,请先执行此操作。减少行数将始终帮助您提高性能。考虑到表格连接,您可能不会每次都获得提到的灵活性。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-03-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-09-07
      相关资源
      最近更新 更多