慢sql查询执行

时间:2012-04-06 14:22:34

标签: oracle oracle11g

我有以下相当简单的查询

select count(*) from tbl t1, tbl t2

由于某种原因,执行此命令需要几十秒。我想知道为什么会这样?它似乎构建了那些表的笛卡尔积(表有大约270k行),但是行数很明显而没有构建产品。

一些澄清会有所帮助。

2 个答案:

答案 0 :(得分:3)

我认为优化器不是为优化笛卡尔积而构建的(特别是对于你提到的大型表)。在您的情况下,它可能会构建完整的结果集并对其进行计数。

而不是打架,只需计算一次

select count(*) from tbl

自己构建产品。

(我认为你有一个比你发布的相当无意义的自我加入更有用的案例:-),请添加一些你想要实现的信息。)

答案 1 :(得分:2)

如果只是想了解笛卡尔积,为什么不自己计算?

SELECT Power(COUNT(*), 2) AS product 
FROM   tbl t1;