小问题一个:
视图的数据会随着基础表的数据更新而更新。
想知道:是更新基础表的时候同时更新了视图
还是每次查询视图的时候,重新查询基础表。
一般用到视图都是复杂的,多表查询。如果数据很大(100W条)都有什么办法优化查询?
ORACLE视图在数据库中是没有存储空间的。你可以把普通视图想成一个复杂SQL语句的别名,所以你查询视图的时候,当然是执行里面的SQL语句了,也就是查询的基础表。基础表的数据更改了,视图的结果当然也跟着改变。
如果视图查询的效率低,首先应该优化里面的SQL语句。如果实在没有优化的空间可以考虑做成物化视图,物化视图在数据库中是需要存储空间的,而且需要手工刷新。物化视图也就相当把你内在的SQL语句全部查询出来做成一个表的形式存在,你可以基于物化视图做索引或者分区等优化。如果你们查询的视图要求实时性不高的话可以考虑物化视图,如果要求实时性就需要优化SQL,甚至考虑是否重新设计表结构。