简单sql查询-无法扩展临时段错误
我想在Oracle server上运行这样一个查询(我知道这没有意义,但a尝试使其尽可能简单):简单sql查询-无法扩展临时段错误,sql,oracle,Sql,Oracle,我想在Oracle server上运行这样一个查询(我知道这没有意义,但a尝试使其尽可能简单): tableA和tableC有大约40k条记录,tableB有大约10k条记录 它运行5分钟,然后抛出错误 ORA-01652:无法扩展临时段 如果我在没有“C.tableC”的情况下执行它,它将在2秒钟内完成 有什么问题吗?我设法解决了这个问题。 需要使用gather\u table\u stats函数手动分析tableC。您的实际查询在where子句中的任何位置都没有tableC?在这里使用tab
tableA
和tableC
有大约40k条记录,tableB
有大约10k条记录
它运行5分钟,然后抛出错误
ORA-01652:无法扩展临时段
如果我在没有“C.tableC”的情况下执行它,它将在2秒钟内完成
有什么问题吗?我设法解决了这个问题。
需要使用gather\u table\u stats函数手动分析tableC。您的实际查询在
where
子句中的任何位置都没有tableC
?在这里使用tableC有什么意义?另外,最好在tableA和tableB之间使用内部联接
。我在WHERE子句中用tableC编辑了这个问题,但我认为如果没有它,它应该可以工作@Kaf不幸的是,由于其他原因,我无法使用内部联接。0_o否。不,您可以使用内部联接
。如果where子句中有tableC,则会产生不同。如果你不这样做,你会得到一个笛卡尔连接。这可能就是结果如此巨大的原因。当您将tableC添加到where子句时,它是否发生了变化(顺便说一句:这是不使用隐式联接的一个很好的理由——您很容易错过联接条件)
select tableA.acolumn
from A.tableA, A.tableB, C.tableC
where tableA.acolumn = tableB.acolumn and tableA.cId = tableC.id