避免频繁调用 Oracle 过程中的相同视图
Avoiding frequent call to same view inside a Oracle procedure
我有一个 oracle 视图 returns 来自不同表的 500 万条记录,我使用这个视图通过单个过程插入到不同的表中,在这个过程中我多次使用它,这影响了性能,有什么方法可以让我们查询一次视图,然后我可以在多个地方使用它?
视图是存储的查询;本身,它不包含任何数据。如果它的代码很复杂并且从几个 table 中获取数据,使用不同的条件、聚合等等,它可能需要一些时间来访问数据。
在您的情况下,全局(或私有;取决于您使用的 Oracle 版本)临时 table (GTT) 可能会有所帮助。
- 你创建一次
- 在过程开始时,将视图中的数据插入其中
- 程序的其余部分将适用于那些准备好的数据
- 一旦会话(或交易;取决于您设置 GTT 的方式)结束,来自 table 的数据将丢失
- table 可以在您下次 运行 程序时重复使用
我有一个 oracle 视图 returns 来自不同表的 500 万条记录,我使用这个视图通过单个过程插入到不同的表中,在这个过程中我多次使用它,这影响了性能,有什么方法可以让我们查询一次视图,然后我可以在多个地方使用它?
视图是存储的查询;本身,它不包含任何数据。如果它的代码很复杂并且从几个 table 中获取数据,使用不同的条件、聚合等等,它可能需要一些时间来访问数据。
在您的情况下,全局(或私有;取决于您使用的 Oracle 版本)临时 table (GTT) 可能会有所帮助。
- 你创建一次
- 在过程开始时,将视图中的数据插入其中
- 程序的其余部分将适用于那些准备好的数据
- 一旦会话(或交易;取决于您设置 GTT 的方式)结束,来自 table 的数据将丢失
- table 可以在您下次 运行 程序时重复使用