0

私は次のかなり単純なクエリを持っています

select count(*) from tbl t1, tbl t2

このコマンドの実行には、なぜか数十秒かかります。なぜそれが起こるのだろうか?そのテーブルのデカルト積を構築しているようです(テーブルには約27万行あります)が、積を構築しなくても行の量は明らかです。

いくつかの説明が役立ちます。

4

2 に答える 2

3

オプティマイザーはデカルト積を最適化するように構築されていないと思います(特に、あなたが言及したように大きなテーブルではありません)。あなたの場合、おそらく完全な結果セットを構築してカウントします。

戦うのではなく、テーブルを一度数えるだけ

select count(*) from tbl

自分で製品を構築します。

(投稿した無意味な自己結合よりも便利なケースを念頭に置いていると思います:-)、達成したいことについてさらに情報を追加してください。)

于 2012-04-06T15:15:50.963 に答える
2

デカルト積を知りたいだけなら、自分で計算してみませんか?

SELECT Power(COUNT(*), 2) AS product 
FROM   tbl t1; 
于 2012-04-07T12:11:36.000 に答える