【问题标题】:Which one is faster view or subquery?哪个是更快的视图或子查询?
【发布时间】:2011-09-28 22:55:45
【问题描述】:

问题说明了一切。哪个更快?在速度优化方面,我们什么时候应该使用视图而不是子查询,反之亦然?

我没有特定的情况,但是在 mysql 中尝试一些带有视图的东西时正在考虑这个问题。

【问题讨论】:

    标签: mysql sql view subquery


    【解决方案1】:

    两者在 MySQL 中都不是特别有效。在任何情况下,MySQL 都不会缓存视图中的数据,因此视图只是在查询执行中添加了另一个步骤。这使得视图比子查询慢。查看这篇博文了解更多信息http://www.mysqlperformanceblog.com/2007/08/12/mysql-view-as-performance-troublemaker/

    一种可能的替代方案(如果您可以处理稍微过时的数据)是物化视图。查看Flexviews 了解更多信息和实现。

    【讨论】:

      【解决方案2】:

      无论哪种方式,智能优化器都会提出相同的执行计划。但是如果存在差异,那将是因为优化器由于某种原因无法正确预测视图的行为方式,这意味着子查询在某些情况下可能具有优势。

      但这不是重点;这是一个正确性问题。视图和子查询有不同的用途。您使用视图来提供代码重用或安全性。在不了解安全和维护含义的情况下使用视图时却使用子查询是愚蠢的。 正确性胜过性能。

      【讨论】:

      • 我明白了。所以基本上速度方面它们是一样的?
      • 谢谢乔尔。我知道视图和子查询的不同用途,但我想知道如果使用其中一个或另一个是否会提高速度。
      猜你喜欢
      • 2011-11-13
      • 2015-07-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-02-08
      • 1970-01-01
      • 2013-02-11
      • 2012-05-27
      相关资源
      最近更新 更多