对数据库的VIEW机制的一点疑问 |
发布: 2011-08-21 11:41 |
现在多数关系数据库都支持VIEW,但却对它们的实现机制有一点疑问。 假如有一个表table_1,然后创建一个视图,view_1, create view as select * from table_1; 那么在使用view的时候与使用table_1时完全没有区别,那么在效率上有否有区别呢? 因为在使用view查询的时候,这个查询条件是给view的,view的处理有两种可能, 一种是把这个where条件转给table_1,那么,查询的时候,不需要读取不符合条件的记录。这种情况下效率与直接查询原有理论上相同。但问题是是否view一定能把这个查询条件传递给它所用的查询SQL上去? 第二种可能,相当于子查询方式使用给view的条件, 差不多像这样, select * from (select * from table_1) where name='567'; 这种情况,任何数据库都会对子查询有所优化,但这种优化是否能达到直接查询table_1的效率呢? 想到这个问题是因为像dblink和我之前写的mylink模块,从远程获取数据时,这两种情况应该有很大不同,需要考虑view在这种情况是否可用,使用的代价有多大。 研究下这问题,也许不是个问题。 |
原文: http://qtchina.tk/?q=node/593 |
Powered by zexport
|