这个十分情况的。
通过试图,修改表数据:
要满足这个条件: 视图中被修改的列必须直接引用表列中的基础数据
建议:试图,主要还是用来保证数据的安全,创建视图,其实降低了数据库的性能(SQL2008经典入门中有详细的解释)。
视图一般式可以更新的,但前提是不能有聚合函数或分组等。
在这个前提下:
1:简单视图
就是由一个表生成出来的视图,这种情况你更新她就和更新表一样
2:二次加工出来的简单视图
仍然是一个表出来的视图,但是视图中存在通过函数或计算二次加工出来的其他字段。更新的时候只要不更新这些加工出来的字段也是可以更新的。
3:组合视图
通过表之间关联联合等出来的复杂视图。这种视图更新的时候要注意你所更新的列要来自同一个表,也是可以更新的。
4:静态视图
这种视图等同于表可以直接更新,但是更新的数据尽在视图中反映出来,不反映到原表
5:其他视图
通过表函数等其他生成的更为复杂的视图。一般不可更新
在Oracle数据库中,使用大量数据的视图来更新另一个表可能会导致性能问题。视图是一个虚拟表,它是从一个或多个基础表根据查询语句生成的。因此,当你查询一个包含百万级数据的视图时,实际上是在查询底层的表,这可能导致查询速度变慢,尤其是当涉及到多个大表和复杂的连接条件时。
客户反馈说不合理,不能查询视图来更新,这个说法并不完全正确。在Oracle中,你可以通过视图来更新基础表,但是需要满足以下条件:
视图是可更新的。这意味着视图必须满足一定的要求,如不能包含聚合函数、distinct关键字等。
视图的更新 *** 作不会影响到其他表,导致数据不一致。
然而,视图更新 *** 作可能会导致性能问题,因为视图查询的底层表可能很大。在你的情况下,如果视图是可更新的,并且在性能上可接受,那么可以考虑继续使用视图进行更新。否则,你可以考虑以下几种方法来优化这个过程:
对视图进行优化。检查底层查询是否可以进行优化,例如使用更有效的连接条件、索引等。
使用物化视图。物化视图是一个实际的表,它存储了视图的数据。与普通视图相比,物化视图可以大大提高查询性能,因为数据已经被计算和存储在物化视图中。
分批更新。将数据分成较小的批次进行处理,可以减轻数据库的压力,提高性能。
总之,通过视图来更新表并不一定不合理,但是需要考虑视图的可更新性和性能。在实际 *** 作中,应根据具体情况进行权衡,并尽量采用最优的方法来提高性能。
…………
回复:
即使您的表不是视图的基础表,查询百万级的视图来更新表也可能会导致性能问题。这是因为视图查询的底层表可能很大,可能需要执行大量的IO *** 作和计算来获取所需的数据。因此,即使您的表不是视图的基础表,使用视图来更新表也可能会导致性能问题。
如果您只是需要通过视图查询数据而不更新数据,也可能会受到相同的性能问题。如果您的查询涉及到大量的数据和复杂的连接条件,那么查询性能可能会很低。这也可能会影响到其他用户的查询 *** 作。
如果视图不能用于查询更新,您可以要求提供视图中的基础表,并使用基础表进行查询和更新 *** 作。这将消除使用视图时可能遇到的性能问题,因为您可以直接查询和更新基础表。不过,在使用基础表之前,您需要确保查询和更新 *** 作不会影响到其他表的数据完整性。
以上就是关于数据库 对可更新的视图进行了诸如insert、update之类的更新是不是就等于对基本表进行了更新全部的内容,包括:数据库 对可更新的视图进行了诸如insert、update之类的更新是不是就等于对基本表进行了更新、在SQL 里哪些视图可以更新,哪些不可以更新。(要写500字的论文)希望提供全面一点的~、在Oracel中,查询百万级以上的视图来更新另外一个表,是否合理等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)