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

WITH句に無関係なテーブルを追加すると、PostgreSQLのクエリが遅くなりますか?

    Explainを使用して、クエリオプティマイザがクエリを処理する方法を示すことができます。

    http://www.postgresql.org/docs/9.2/static /sql-explain.html

    上記の場合、PSQLは、temp3が使用されておらず、含まれていないことを確認する必要があります。

    上記の例を1つの私のデータベースで使用します。

    explain with temp1 as (select * from cidrs), temp2 as (select * from contacts), temp3 as ( select * from accounts )  select * from temp1 join temp2 on temp1.id = temp2.id;
                                 QUERY PLAN
    ---------------------------------------------------------------------
     Hash Join  (cost=22.15..25.44 rows=20 width=4174)
       Hash Cond: (temp1.id = temp2.id)
       CTE temp1
         ->  Seq Scan on cidrs  (cost=0.00..11.30 rows=130 width=588)
       CTE temp2
         ->  Seq Scan on contacts  (cost=0.00..10.20 rows=20 width=3586)
       ->  CTE Scan on temp1  (cost=0.00..2.60 rows=130 width=588)
       ->  Hash  (cost=0.40..0.40 rows=20 width=3586)
             ->  CTE Scan on temp2  (cost=0.00..0.40 rows=20 width=3586)
    (9 rows)
    

    temp3についての言及はありません。あなたの編集に答える際に、なぜそれがクエリ時間に影響を与えないのかについて、オプティマイザはそれが使用されておらず、それを計算することを気にしないことを確認するのに十分賢いです。したがって、それがオプティマイザである理由。



    1. T-SQLでvarcharをdatetimeに変換する方法は?

    2. ActiveRecord::AdapterNotSpecifiedデータベース構成がアダプターを指定していません

    3. SQLServer2008でのPIVOTの使用

    4. PHPとMySQLを使用して関連または類似の投稿を作成する