sql >> データベース >  >> RDS >> PostgreSQL

UNIONALLビューでの遅いクエリ

    これはパイロットエラーの場合のようです。 「v」クエリプランは、少なくとも5つの異なるテーブルから選択します。

    さて、あなたは正しいデータベースに接続していると確信していますか?たぶん、いくつかのファンキーなsearch_path設定がありますか?たぶん、t1とt2は実際にはビューです(おそらく別のスキーマにあります)?どういうわけか間違ったビューから選択しているのでしょうか?

    明確化後に編集:

    「結合の削除」と呼ばれるまったく新しい機能を使用しています: http:// wiki.postgresql.org/wiki/What%27s_new_in_PostgreSQL_9.0#Join_Removal

    http://rhaas.blogspot.com/2010 / 06 / why-join-removal-is-cool.html

    ユニオンオールが関与している場合、この機能は機能しないようです。おそらく、必要な2つのテーブルのみを使用してビューを書き直す必要があります。

    別の編集:集計を使用しているようです(「vからcount(*)を選択」と「vから*を選択」など)。これにより、結合の削除に直面して大幅に異なるプランが取得される可能性があります。実際のクエリ、ビューとテーブルの定義、および使用された計画を投稿しない限り、私たちはそれほど遠くまでは行かないと思います...



    1. SQLドット表記

    2. Oracle:sqlplusで機能するようにクライアントプロセスの終了を検出するにはどうすればよいですか?

    3. SQL Server で挿入/更新する前にデータを検証するにはどうすればよいですか?

    4. MariaDBでのTIMESTAMP()のしくみ