基于视图的视图比较慢



我在SQL Server 2005数据库上创建了视图,这个视图是基于第三方提供的视图。我通过JDBC连接在我们的应用程序中显示它们,它们似乎很慢。我尝试了另一种方法,并通过使用SQL (select into)命令将它们创建为表,在这种情况下,查看应用程序中的数据速度很快。你能告诉我最好的方法吗?

如何提高应用程序性能?

  1. 索引视图。
  2. 使用SSIS将它们放入我们的数据库,该数据库也是SQL Server 2008 R2。
  3. 还有什么?

我认为提高查询(包括视图)性能的最佳方法是查看由SSMS生成的查询计划。我首先查找的是索引或表扫描。当您看到其中任何一种情况时,很有可能需要索引,并且通常需要在索引中包含列才能实际使用索引。

索引视图可以极大地提高性能。然而,微软对它们设置了很多限制,通常很难真正使用它们。它们还会影响基表上的插入/更新/删除性能。所以这是一种权衡。

我怀疑创建一个单独的表是一个可行的长期和可扩展的方法,除非计划是执行这些查询非常少的次数。复制这些数据的过程可能非常耗费资源。

您应该首先了解慢在哪里。

将数据物化到表中显然意味着以后的选择可以更快,但是复制可能很慢。如果数据是缓慢变化的,那当然是一种可行的设计方法。

索引视图有限制,所有索引都会影响写性能,因为当数据发生变化时,它们需要更新。

听起来像是两个服务器在起作用。不清楚您创建的视图是在您的服务器上还是在2005年的服务器上。如果您在一个服务器上创建另一个链接服务器上的视图,那么在服务器之间提取的数据可能比严格必要的要多(与同一服务器上的所有视图相比,可以一起优化)。

如何提高应用程序性能?

  1. 索引视图。
  2. 使用SSIS将它们放入我们的数据库,该数据库也是SQL Server 2008 R2。
  3. 还有什么?

另一个没有提到的选项是

不要使用视图

我的经验是,非索引视图通常会使事情变慢,并且由于限制,索引视图很难创建。

如果你遇到一些问题,你认为你需要使用视图尝试使用CTE或内联视图代替。

最新更新