私の SQL は少しさびていて、この WHERE 句を実行するためのより良い方法があるかどうか興味がありましたか? 方法があると仮定すると、確かにあると思います。そのままではかなり速く動作しますが、私はそれが気に入らないので、改善できるかどうか知りたいです.
SELECT DISTINCT p.firstname ,
p.middlename ,
p.lastname ,
p.gender ,
p.dob ,
p.id AS patientid ,
pr.id AS practiceid ,
pr.[name] AS practicename,
pr.parentaco ,
pp.encounterdate
FROM ((aco.patients_practices patients_practices
LEFT OUTER JOIN aco.patients p
ON (
patients_practices.patientid = p.id
)
)
LEFT OUTER JOIN aco.practices pr
ON (
patients_practices.practiceid = pr.id
)
)
INNER JOIN aco.patientpreferences pp
ON (
pp.patientid = p.id
)
WHERE (
pr.parentaco =
(SELECT parentaco
FROM aco.practices
WHERE master_companyid = 763
)
OR pr.id =
(SELECT parentaco
FROM aco.practices
WHERE master_companyid = 763
)
)
AND pp.encounterdate IS NOT NULL