【问题标题】:Do I gain any performance advantages by using VIEWs rather than JOINs?我是否通过使用 VIEWs 而不是 JOINs 获得任何性能优势?
【发布时间】:2011-03-11 18:28:33
【问题描述】:

在我们的项目中,我们经常会在 3 个表上编写复杂的连接。我们是否通过使用视图获得任何性能优势,或者它们只是为了让查询编写者的生活更轻松?万一这很重要,我们使用 MySQL。如果因此实现了任何优势(当然除了更简单的查询),请说明。

【问题讨论】:

    标签: sql performance join view


    【解决方案1】:

    一般而言,普通视图不会比仅运行查询提供太多性能改进。但是,大多数数据库系统,包括 MySql(我相信......自从我使用它以来已经有一段时间了)提供某种索引或物化视图功能。通常,这样的视图有相当多的限制才能可行,但是一旦创建,支持查询的结果就会缓存在一个物理表中(对于 SQL Server 索引视图,是 TempDB 中的一个表。)数据库服务器是然后负责跟踪对底层查询的更改,并更新缓存的副本。按照查询普通表的顺序,针对此类索引/物化视图的查询通常要快得多。

    【讨论】:

      【解决方案2】:

      视图只是简单的逻辑表,与在运行时运行相同的 sql 没有什么不同。唯一的区别是一种物化视图,就像 oracle 使用的一样,它就像一个缓存视图。

      【讨论】:

      • 我想将您的答案与 jrista 的答案一起标记为正确答案,但显然只有一个答案可以标记为正确答案,所以我给了您的答案。
      【解决方案3】:

      视图(普通视图)本身不会提供性能优势,除非使用具有许多限制的索引视图(也称为物化视图)。并非所有视图都可以实现。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-03-04
        • 1970-01-01
        • 1970-01-01
        • 2011-06-11
        • 2011-12-18
        • 1970-01-01
        • 2020-06-07
        • 2015-10-18
        相关资源
        最近更新 更多