database - Oracle 临时表 : breaking a large query into steps

标签 database oracle oracle11g temp-tables

在 SQL Server Land 工作了 4 年多之后,我已经在 Oracle World 工作了 3 周。现在,我发现 Oracle 缺少本地临时表令人困惑。

代替用于报告的数据仓库,我经常负责将来自大量规范化数据的报告放在一起。我很快了解到,将所有逻辑塞进一个巨大的查询(即具有许多连接、子查询、相关子查询、联合等的查询)是导致糟糕性能的一个原因。将流程适本地分解为更小的步骤并利用索引临时表(您可以在过程或临时脚本中动态创建和更改)通常会以指数方式更快。<​​/p>

进入 Oracle...没有本地临时表。显然,如果没有被授予创建永久表的权限,我什至无法创建全局临时表。我在谷歌上搜索了“oracle 临时表权限”和 first link返回的是一个论坛问题,其中接受的答案以“正如已经指出的那样,想要拥有可以创建全局临时表但不能创建永久表的用户是非常不寻常的。我很难想象一个有意义的场景。”这正是我可以在我们的生产环境中使用的东西。我对 SQL Server 感到震惊。

我几乎可以接受只有全局临时表可以使用,但在 Oracle 中以这种方式使用它们真的很不寻常吗?如果有的话,我可以做些什么来在不使用临时表的情况下实现某种类似的分步逻辑?在临时脚本中,我如何保存并在以后重用类似于索引数据集的内容?我显然在寻找子查询或 CTE 以外的东西。

我一定是漏掉了什么...

最佳答案

不幸的是,我们没有这样的特权。但作为解决方法,您可以撤销永久表空间上的任何配额,这样用户就无法创建任何永久表。当然,在具有延迟段创建功能的 11g 中,用户可以创建表,但他们无法插入任何行。因为临时表使用临时表空间,所以它们不会有任何问题。 莫森

关于database - Oracle 临时表 : breaking a large query into steps,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39380684/

相关文章:

java - hibernate 查找表 : As an Object Relation or as a code/key

sql - Oracle 数据库 SQL - 嵌入式选择

java - Oracle工作流API : adding and accessing file Attachments to a Human Task

sql - 如何在包含空值的列上添加非空约束

java - 为什么我们需要 ACT_RU_IDENTITYLINK?该表的用途是什么?为什么 ACTIVITI 创建它?

mysql - 在 MySql 数据库中,如何在不关心 Perl DBI 中字段大小写的情况下查询字段

c# - 允许用户将数据保存到文件

oracle - Oracle 存储过程的 "Boolean"参数

json - Oracle中如何使用json格式获取值

sql - 为什么这个触发器不好?