我已经创建了有关SQL Server 2005数据库的视图,并且此视图基于第三方提供的视图。我通过JDBC连接在应用程序中显示它们,它们似乎很慢。我尝试了另一种方法,并通过使用SQL(select into)命令将它们创建为表,在这种情况下查看应用程序中的数据的速度非常快。你能告诉我关于最好的方法吗?视图很慢
如何提高应用程序性能?
- 索引视图。
- 使用SSIS将它们导入我们的数据库,这也是SQL Server 2008 R2。
- 还有什么?
我已经创建了有关SQL Server 2005数据库的视图,并且此视图基于第三方提供的视图。我通过JDBC连接在应用程序中显示它们,它们似乎很慢。我尝试了另一种方法,并通过使用SQL(select into)命令将它们创建为表,在这种情况下查看应用程序中的数据的速度非常快。你能告诉我关于最好的方法吗?视图很慢
如何提高应用程序性能?
您应该了解缓慢的起点。
将数据实现到表中显然意味着后面的选择可能会更快,但复制可能会很慢。如果数据正在缓慢变化,那当然是一种可行的设计方法。
索引视图有限制,所有索引都会影响写入性能,因为它们需要在数据更改时更新。
这听起来像两台服务器可以在这里玩。目前还不清楚您创建的视图是在您的服务器还是在2005服务器上。如果您在一台服务器上在另一台链接服务器上的视图中创建视图,则可能会导致服务器之间的数据量超过严格需要(与所有视图位于同一台服务器上并且可以一起优化) 。
为了提高查询(包括视图)的性能,我必须找到的最好方法是查看由SSMS生成的生成的查询计划。我期待的第一件事是索引或表格扫描。当你看到其中的任何一个时,就很有可能需要索引,而且通常你需要在索引中包含INCLUDE列以便实际使用索引。
索引视图可以带来巨大的性能提升。但是,微软对它们施加了很多限制,实际使用它们往往非常困难。它们也会影响基表上的插入/更新/删除性能。所以有一个折衷。
我怀疑创建一个单独的表是一个可行的长期和可扩展的方法,除非计划要执行这些查询很少的几次。复制这些数据的过程可能非常耗费资源。
如何提高应用程序性能?
- 索引视图。
- 使用SSIS将它们导入我们的数据库,这也是SQL Server 2008 R2。
- 还有什么?
没有提到的另一种选择是
不要使用意见
我的经验是非索引意见通常使事情更慢,索引视图是难以创造因限制。
如果您遇到一些问题,您认为您需要使用View来尝试使用CTE或内联视图。
嗨,感谢您的输入。我在第三方数据库中创建了这些视图,这些视图也基于视图;我使用SSIS将数据导入到我的sql服务器实例 – user362283
当您根据视图说...您是指您创建的视图select form other views? –
是每个视图基于不同的视图 – user362283