我有一个有点复杂的oracle视图,我用它来生成实时报告。由于导出表的所有行都是拉出来的,所以无论是通过索引还是分区,都没有什么改进的余地。
我想知道我是否可以使用流水线表功能来提高我的报表的性能。
我之所以想到这个问题,是因为我不清楚SQL到底是如何工作的。查询是否等待直到从表中获取所有的行,或者它的工作方式就像一个管道表函数的方式,只要从底层表中获取一行就会被处理。
一个SQL查询一旦有行就会返回。 根据优化器的查询计划,这可能是 "立即",也可能在收集记录和排序等过程中会有明显的延迟。
使用pipelined函数不能提高这种性能,因为pipelined函数必须首先从查询中获取一些数据回来,然后再开始用管道传送出去。 它从查询中获取数据的速度不会比你快。