Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sql-server-2005/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 2005 如何使用视图和索引来提高性能_Sql Server 2005 - Fatal编程技术网

Sql server 2005 如何使用视图和索引来提高性能

Sql server 2005 如何使用视图和索引来提高性能,sql-server-2005,Sql Server 2005,我正在处理一些具有基于时态的行并且存在于不同数据库中的表。其思想是编写存储过程来获取并最终处理数据,这反过来又会利用许多连接,从而产生大量数据。然后我会执行某种聚合逻辑来获得所需的数据 这样的存储可能需要使用循环等,速度会非常慢 我是否可以使用视图创建一个表,该表已经是一个仅由所需行(从联接和聚合中获得)组成的短列表表。我在这里缺少一些基本知识: 1.视图是否仅在运行时获取数据?如果有,我如何使用它们来提高性能。 2.我可以使用索引来提高这种视图的性能吗? 3.游标比循环快吗?我知道我可以使用某

我正在处理一些具有基于时态的行并且存在于不同数据库中的表。其思想是编写存储过程来获取并最终处理数据,这反过来又会利用许多连接,从而产生大量数据。然后我会执行某种聚合逻辑来获得所需的数据

这样的存储可能需要使用循环等,速度会非常慢

我是否可以使用视图创建一个表,该表已经是一个仅由所需行(从联接和聚合中获得)组成的短列表表。我在这里缺少一些基本知识: 1.视图是否仅在运行时获取数据?如果有,我如何使用它们来提高性能。 2.我可以使用索引来提高这种视图的性能吗? 3.游标比循环快吗?我知道我可以使用某种查询来避免循环——但是假设我必须使用循环,那么游标是更好的选择吗


谢谢…

索引视图可以提高性能,但是在线阅读有关它们的书籍,因为对哪些类型的视图可以索引有很多限制。它们确实有助于聚合,但前提是您可以满足索引视图必须满足的其他条件。调用其他视图的视图可能会大大降低性能,不要使用它们

如果无法使用索引视图解决问题,为了提高聚合性能,一种策略是将聚合值存储在一个表中,该表在基础数据发生更改时通过触发器进行更新。这样,每次数据更改只进行一次计算,而不是在select查询中重复多次。触发器必须仔细编写并处理多个记录插入/更新/删除。如果聚合可能与实时稍微不同步,则可以通过作业而不是触发器来完成

应用程序代码中很少需要游标和循环。它们的实际用途通常用于数据库管理任务。为了帮助您了解比循环更好的使用方法,请阅读以下内容:

游标和循环同样糟糕,为什么您认为需要循环?