SQL查看问题

时间:2010-09-03 15:04:30

标签: sql views

创建视图是否有任何负面影响,特别是数据库中的大视图(50多列)?

5 个答案:

答案 0 :(得分:1)

取决于它是来自50个内部连接表的1列还是来自1个表的50列 说实话,只要你没有使用大量的标量函数,两者都可以。

想想看,这是一个非常主观的问题。粘贴一些代码;)

答案 1 :(得分:1)

从表现的角度来看,我认为本身并没有真正的负面影响。如果基础查询效率低下并且可能导致不期望的锁定,那么视图将继承这些问题,尽管它更可能被缓存而不是任意语句。我要说的是,负面影响带来的风险在于,通过创建视图并抽象查询的复杂性,您可能会面临使用它的风险,而无需深入了解基础查询的特征。然后在积极的一面,视图也打开了一些不同的优化可能性(索引视图等),并且有时能够对一组数据进行去规范化可以显着减少编写冗余查询的需要。

因此,与大多数工具一样,无论它们是帮助还是损害,都掌握在实施者手中。

答案 2 :(得分:1)

视图上的SELECT(非索引)会执行以下操作:

SELECT Xyz FROM
(
    SELECT Abc FROM yourbigtable
)

因此,首先要检查您想要实现的查询的性能。

首先尝试解决没有视图的问题,然后简化它。

麦克

答案 3 :(得分:0)

根据我的经验,视图可以提供与您直接查询物理表完全相同的性能。

答案 4 :(得分:0)

如果它是索引视图,它将占用数据库中更多的空间,并减慢对基表中记录的更新。