Postgres newbie here.
Je me demande si cette requête est optimisée ou non? J'ai essayé de JOIN ON uniquement les valeurs qui sont 100% nécessaires et en laissant toutes les conditions dynamiques dans la clause WHERE. Voir ci-dessous.
SELECT *
FROM
myapp_employees
JOIN myapp_users ON
myapp_users.user_id=myapp_employees.user_id
JOIN myapp_contacts_assoc ON
myapp_contacts_assoc.user_id=myapp_users.user_id
JOIN myapp_contacts ON
myapp_contacts.contact_id=myapp_contacts_assoc.contact_id
WHERE
myapp_contacts.value='test@gmail.com' AND
myapp_contacts.type=(1)::INT2 AND
myapp_contacts.is_primary=(1)::INT2 AND
myapp_contacts.expired_at IS NULL AND
myapp_employees.status=(1)::INT2 AND
myapp_users.status=(1)::INT2
LIMIT 1;
Remarque: Pour le contexte, ce proc vérifie si un utilisateur est également un employé (privilèges élevés / type d'utilisateur différent).
Quoi qu'il en soit, est-ce la bonne façon de procéder? Le JOIN ON doit-il contenir plus d'instructions comme la vérification de expired_at IS NULL, par exemple? Pourquoi ou pourquoi cela n'a-t-il pas de sens?
SELECT version();
)