2011-11-16 111 views
1

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

如何提高应用程序性能?

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

回答

1

您应该了解缓慢的起点。

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

索引视图有限制,所有索引都会影响写入性能,因为它们需要在数据更改时更新。

这听起来像两台服务器可以在这里玩。目前还不清楚您创建的视图是在您的服务器还是在2005服务器上。如果您在一台服务器上在另一台链接服务器上的视图中创建视图,则可能会导致服务器之间的数据量超过严格需要(与所有视图位于同一台服务器上并且可以一起优化) 。

2

为了提高查询(包括视图)的性能,我必须找到的最好方法是查看由SSMS生成的生成的查询计划。我期待的第一件事是索引或表格扫描。当你看到其中的任何一个时,就很有可能需要索引,而且通常你需要在索引中包含INCLUDE列以便实际使用索引。

索引视图可以带来巨大的性能提升。但是,微软对它们施加了很多限制,实际使用它们往往非常困难。它们也会影响基表上的插入/更新/删除性能。所以有一个折衷。

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

-1

如何提高应用程序性能?

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

没有提到的另一种选择是

不要使用意见

我的经验是非索引意见通常使事情更慢,索引视图是难以创造因限制。

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

+0

嗨,感谢您的输入。我在第三方数据库中创建了这些视图,这些视图也基于视图;我使用SSIS将数据导入到我的sql服务器实例 – user362283

+0

当您根据视图说...您是指您创建的视图select form other views? –

+0

是每个视图基于不同的视图 – user362283