私は次のかなり単純なクエリを持っています
select count(*) from tbl t1, tbl t2
このコマンドの実行には、なぜか数十秒かかります。なぜそれが起こるのだろうか?そのテーブルのデカルト積を構築しているようです(テーブルには約27万行あります)が、積を構築しなくても行の量は明らかです。
いくつかの説明が役立ちます。
オプティマイザーはデカルト積を最適化するように構築されていないと思います(特に、あなたが言及したように大きなテーブルではありません)。あなたの場合、おそらく完全な結果セットを構築してカウントします。
戦うのではなく、テーブルを一度数えるだけ
select count(*) from tbl
自分で製品を構築します。
(投稿した無意味な自己結合よりも便利なケースを念頭に置いていると思います:-)、達成したいことについてさらに情報を追加してください。)
デカルト積を知りたいだけなら、自分で計算してみませんか?
SELECT Power(COUNT(*), 2) AS product
FROM tbl t1;