PostgreSQL
 sql >> Base de données >  >> RDS >> PostgreSQL

Instruction OR lente dans postgresql

Approche entièrement nouvelle. Votre where la condition est sur deux tables, mais cela semble inutile.

Le premier changement serait :

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

Je pense que la structure que vous souhaitez est une analyse de la table des catégories, puis extraite de la table des annonces. Pour vous aider, vous pouvez créer un index sur advert(advert_category_id, created_date) .

Je serais tenté d'écrire la requête en déplaçant le where clause dans une sous-requête. Je ne sais pas si cela affecterait les performances :

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;