【发布时间】:2011-03-11 18:28:33
【问题描述】:
在我们的项目中,我们经常会在 3 个表上编写复杂的连接。我们是否通过使用视图获得任何性能优势,或者它们只是为了让查询编写者的生活更轻松?万一这很重要,我们使用 MySQL。如果因此实现了任何优势(当然除了更简单的查询),请说明。
【问题讨论】:
标签: sql performance join view
在我们的项目中,我们经常会在 3 个表上编写复杂的连接。我们是否通过使用视图获得任何性能优势,或者它们只是为了让查询编写者的生活更轻松?万一这很重要,我们使用 MySQL。如果因此实现了任何优势(当然除了更简单的查询),请说明。
【问题讨论】:
标签: sql performance join view
一般而言,普通视图不会比仅运行查询提供太多性能改进。但是,大多数数据库系统,包括 MySql(我相信......自从我使用它以来已经有一段时间了)提供某种索引或物化视图功能。通常,这样的视图有相当多的限制才能可行,但是一旦创建,支持查询的结果就会缓存在一个物理表中(对于 SQL Server 索引视图,是 TempDB 中的一个表。)数据库服务器是然后负责跟踪对底层查询的更改,并更新缓存的副本。按照查询普通表的顺序,针对此类索引/物化视图的查询通常要快得多。
【讨论】:
视图只是简单的逻辑表,与在运行时运行相同的 sql 没有什么不同。唯一的区别是一种物化视图,就像 oracle 使用的一样,它就像一个缓存视图。
【讨论】:
视图(普通视图)本身不会提供性能优势,除非使用具有许多限制的索引视图(也称为物化视图)。并非所有视图都可以实现。
【讨论】: