Postgres người mới ở đây.
Tôi đang tự hỏi nếu truy vấn này được tối ưu hóa hay không? Tôi đã cố gắng THAM GIA chỉ các giá trị cần thiết 100% và để lại tất cả các điều kiện động trong mệnh đề WHERE. Xem bên dưới.
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;
Lưu ý: Đối với ngữ cảnh, Proc này đang kiểm tra xem liệu người dùng cũng là nhân viên (tư nhân nâng cao / loại người dùng khác nhau).
Dù sao, đây có phải là con đường đúng đắn? Ví dụ, THAM GIA có nên chứa nhiều câu lệnh hơn như kiểm tra expired_at IS NULL không? Tại sao hoặc tại sao điều này không có ý nghĩa?
SELECT version();
)