PostgreSQL
 sql >> Database >  >> RDS >> PostgreSQL

Istruzione OR lenta in postgresql

Approccio completamente nuovo. Il tuo where la condizione è su due tabelle, ma sembra non necessario.

Il primo cambiamento sarebbe:

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

Penso che la struttura che desideri sia una scansione sulla tabella delle categorie e quindi recupera dalla tabella degli annunci. Per aiutare, puoi creare un indice su advert(advert_category_id, created_date) .

Sarei tentato di scrivere la query spostando il where clausola in una sottoquery. Non so se questo influirà sulle prestazioni:

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;