使用VIEW而不是JOIN可以获得任何性能优势吗?

时间:2010-07-05 04:15:56

标签: sql performance join view

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

3 个答案:

答案 0 :(得分:5)

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

答案 1 :(得分:3)

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

答案 2 :(得分:1)

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