sql >> Databasteknik >  >> RDS >> PostgreSQL

PostgreSQL:existerar vs left join

Tja, för varje rad i "grupper" gör postgresql en fullständig genomsökning av products_categories, vilket inte är bra. Inte nödvändigtvis ett konfigurationsproblem, men frågan kanske skulle kunna anges utan att kapsla underfrågor som det?

SELECT count(DISTINCT "groups".id) AS count_all 
FROM "groups"
WHERE exists(
    select 1 from products p where groups.id = p.group_id
             join products_categories pc on pc.product_id = p.id
    where pc.category_id in (2,3)
    ) and groups.id <> 3

Gör även products_categories har ett index på product_id ?




  1. Hur man kontrollerar Oracle Client installerad eller inte som en förutsättning för komponentinstallation

  2. Hur kan jag fråga i mysql-table (där lat och long lagras) det som ligger närmast den inmatade platsen (lat och long)?

  3. Hur lägger man till några restriktioner i en fråga?

  4. SESSIONTIMEZONE Funktion i Oracle