sql >> Base de Datos >  >> RDS >> PostgreSQL

Declaración OR lenta en postgresql

Enfoque completamente nuevo. Tu where la condición está en dos tablas, pero eso parece innecesario.

El primer cambio sería:

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

Creo que la estructura que desea es un escaneo en la tabla de categorías y luego se obtiene de la tabla de anuncios. Para ayudar, puede crear un índice en advert(advert_category_id, created_date) .

Estaría tentado a escribir la consulta moviendo el where cláusula en una subconsulta. No sé si esto afectaría el rendimiento:

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;