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

postgresqlの遅いORステートメント

    まったく新しいアプローチ。あなたのwhere 条件は2つのテーブルにありますが、それは不要のようです。

    最初の変更は次のようになります:

    where a1_.id = 1136 or a1_.parent_id = 1136
    

    必要な構造は、カテゴリテーブルをスキャンして、広告テーブルからフェッチすることだと思います。これを支援するために、advert(advert_category_id, created_date)にインデックスを作成できます。 。

    whereを移動してクエリを記述したくなるでしょう。 サブクエリへの句。これがパフォーマンスに影響するかどうかはわかりません:

    SELECT a0_.id AS id0
    FROM   advert a0_ INNER JOIN
           (select ac.*
            from advertcategory ac
            where ac.id = 1136 or ac.parent_id = 1136
           ) ac
           ON a0_.advert_category_id = ac.id
    ORDER  BY a0_.created_date DESC
    LIMIT  15;  
    


    1. MySQLクエリ、COUNTおよびSUM、2つの結合されたテーブル

    2. 同じSQLクエリで複数のCASE...WHENステートメントを使用するとどうなりますか?

    3. ruby-oci8をインストールするにはどうすればいいですか?

    4. SQL変換のエラーキャスト