sql >> Databáze >  >> RDS >> PostgreSQL

Pomalý příkaz OR v postgresql

Zcela nový přístup. Vaše where podmínka je na dvou tabulkách, ale to se zdá zbytečné.

První změna by byla:

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

Myslím, že struktura, kterou chcete, je skenování tabulky kategorií a poté načtení z tabulky inzerátů. Chcete-li pomoci, můžete vytvořit index na advert(advert_category_id, created_date) .

Byl bych v pokušení napsat dotaz přesunutím where klauzule do poddotazu. Nevím, jestli to bude mít vliv na výkon:

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. Je objednávka PostgreSQL plně zaručena při řazení podle nejedinečného atributu?

  2. Hledání sloupců, které NEJSOU NULL v PostgreSQL

  3. Kolejnice mění typ sloupce a aktualizují hodnoty sloupců

  4. Jak navrhnout hierarchický systém řízení přístupu založený na rolích