为了优化这个查询,可以尝试以下优化方法:

  1. 使用EXISTS替代NOT IN子查询:将NOT IN子查询改为使用EXISTS子查询,可以提高查询性能。
SELECT *
FROM doctor_orders do
WHERE NOT EXISTS (SELECT 1 FROM clinical_vs_patient cvp WHERE cvp.patient_id = do.patient_id)
AND NOT EXISTS (SELECT 1 FROM CLINICAL_TRIAL_MASTER ctm WHERE ctm.id = do.CLINICAL_TRIAL_NO)
  1. 确保相关字段上有索引:在doctor_orders表的patient_id和CLINICAL_TRIAL_NO字段上创建索引,以加快查询速度。

  2. 使用JOIN替代子查询:将子查询改为INNER JOIN,可以提高查询性能。

SELECT do.*
FROM doctor_orders do
LEFT JOIN clinical_vs_patient cvp ON do.patient_id = cvp.patient_id
LEFT JOIN CLINICAL_TRIAL_MASTER ctm ON do.CLINICAL_TRIAL_NO = ctm.id
WHERE cvp.patient_id IS NULL
AND ctm.id IS NULL

通过以上优化方法,可以提高查询的性能和效率。

select from doctor_orders do where dopatient_id not in select cvppatient_id from clinical_vs_patient cvp and doCLINICAL_TRIAL_NO not in select ctmid from CLINICAL_TRIAL_MASTER ctm优化

原文地址: http://www.cveoy.top/t/topic/i9De 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录