首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我想创建一个表的副本,比原始的列更少...但仍在不断更新

我想创建一个表的副本,比原始的列更少...但仍在不断更新
EN

Stack Overflow用户
提问于 2012-06-22 19:56:15
回答 4查看 193关注 0票数 2

我有一个30 30的表,它有30-40列。我使用这个表创建报告,它会导致性能问题。我只使用这个表中的4-5列来生成报告。因此,我想为报告创建第二个表。但是,当原始表在不使用触发器的情况下更改时,必须更新第二个表。

无论我的查询是什么,在执行查询时,sql都会尝试缓存全部30 my的空间。当缓存完全加载时,sql开始使用磁盘。实际上我想避免这种情况。

我该怎么做呢?有没有办法使用ssis提前致谢?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2012-06-22 21:24:57

如果您使用的是SQL Server,则需要的是索引视图。使用所需的列创建视图,然后在其上放置索引。

索引视图将数据存储在视图中。它应该使视图与底层表保持最新,并且应该减少读取表的I/O。注意:这假设您的4-5列比整个表要窄得多。

票数 0
EN

Stack Overflow用户

发布于 2012-06-22 19:57:34

代码语言:javascript
复制
CREATE VIEW myView
AS
SELECT
  column1,
  column3,
  column4 * column7
FROM
  yourTable

视图实际上只是一个存储的查询,就像宏一样。然后,您可以从该视图中进行选择,就好像它是一个普通表一样。

除非你使用具体化的视图,否则它不是一个真正的表,它只是一个查询。所以它不会加速任何东西,但它确实封装了代码,并帮助控制不同用户/登录可以读取的数据。

票数 3
EN

Stack Overflow用户

发布于 2012-06-22 21:02:22

Dems使用视图回答似乎很理想,但如果您真的在寻找一个新表,请创建它并使用触发器自动更新它。

可以为主表上的所有插入、更新和删除操作添加放置在主表上的触发器。当动作发生时,触发器会触发,并可用于执行其他功能...例如更新新辅助表。您将从插入和删除的表中提取(MSDN)

这里有许多关于触发器的优秀文章:Article 1Article 2Google Search

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11155697

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档