Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
我有以下相当简单的查询
select count(*) from tbl t1, tbl t2
由于某种原因,执行此命令需要数十秒的时间。我想知道为什么会这样?似乎它构建了该表的笛卡尔积(表大约有 270k 行),但是在没有构建积的情况下,行数是显而易见的。
一些澄清会有所帮助。
我会假设优化器不是为优化笛卡尔产品而构建的(尤其是不是你提到的大表)。在您的情况下,它可能会构建完整的结果集并对其进行计数。
与其抗争,不如数表一次
select count(*) from tbl
并自己构建产品。
(我假设你有一个比你发布的相当无意义的自我加入更有用的案例:-),请添加更多关于你想要实现的信息。)
如果只是想知道笛卡尔积为什么不自己计算呢?
SELECT Power(COUNT(*), 2) AS product FROM tbl t1;