【发布时间】:2010-09-03 15:04:29
【问题描述】:
在数据库上创建视图,特别是大型视图(50 列以上)是否有任何负面影响?
【问题讨论】:
在数据库上创建视图,特别是大型视图(50 列以上)是否有任何负面影响?
【问题讨论】:
从性能的角度来看,我想说这本身并没有真正的负面影响。如果底层查询效率低下并且可能导致不需要的锁定,则视图将继承这些问题,尽管它比任意语句更有可能被缓存这一事实有所缓解。我想说的是,负面影响的风险来自于通过创建视图和抽象查询的复杂性,您可能会冒着被使用它的风险,而没有充分了解底层查询的特征是什么。然后从积极的方面来看,视图还开辟了一些不同的优化可能性(索引视图等),并且有时能够对一组数据进行反规范化可以显着减少编写冗余查询的需要。
因此,与大多数工具一样,它们是帮助还是有害都掌握在实施者手中。
【讨论】:
取决于它是来自 50 个内部连接表的 1 列还是来自 1 个表的 50 列。
老实说,只要您没有在其中使用大量标量函数,两者都可以。
想一想,这是一个非常主观的问题。粘贴一些代码;)
【讨论】:
视图(非索引)上的SELECT 执行以下操作:
SELECT Xyz FROM
(
SELECT Abc FROM yourbigtable
)
所以我要先检查一下你想要实现的查询的性能。
尝试先在没有视图的情况下解决问题,然后再用它来简化。
迈克
【讨论】:
根据我的经验,视图为您提供与直接查询物理表完全相同的性能。
【讨论】:
如果它是索引视图,它将在您的数据库中占用更多空间并减慢对基表中记录的更新。
【讨论】: