先写一个存储过程从一个视图中取出符合条件的数据放到一个中间表,然后再写一个视图从这个中间表中取数据,为什么第二个视图中间表中取数据时,把从第一个视图中取数据时的存储过程中的条件加上条件后查询的数据会快些。其实中间表中的数据是已经通过存储过程中的条件过滤过的数据。
我通过一个存储过程prc1从视图v1中取一部分符合条件的数据到中间表t1。insert into t1 as select ...from v1 where currency='CNY'等条件。然后再写一个视图v2,从中间表t1中取数据,如create or replace view v2 as select * from t1。大体意思是这样的,不过实质上过程里面向t1中插数据时条件有几个,而视图v2也比较复杂,我在视图v2中加上向t1中插数据时的条件会比不加这些条件的查询数据会快些,其实表t1中的数据已经复合条件啦,为什么我在v2中查询时加上条件还会快些呢?