我有以下相当简单的查询
select count(*) from tbl t1, tbl t2
由于某种原因,执行此命令需要几十秒。我想知道为什么会这样?它似乎构建了那些表的笛卡尔积(表有大约270k行),但是行数很明显而没有构建产品。
一些澄清会有所帮助。
答案 0 :(得分:3)
我认为优化器不是为优化笛卡尔积而构建的(特别是对于你提到的大型表)。在您的情况下,它可能会构建完整的结果集并对其进行计数。
而不是打架,只需计算一次
select count(*) from tbl
自己构建产品。
(我认为你有一个比你发布的相当无意义的自我加入更有用的案例:-),请添加一些你想要实现的信息。)
答案 1 :(得分:2)
如果只是想了解笛卡尔积,为什么不自己计算?
SELECT Power(COUNT(*), 2) AS product
FROM tbl t1;