我有3个表格。 第一张桌: 患者:patid,fname,lname,recordnum。 PATIENTDR:patid,drid, PATIENTCLIN:patid,clinid。如何从第一个表中选择ID是否存在于第二个或第三个表中高效?
如果DRID =“$ docotr-> id”或“PATIENTCLIN”,如果CLINID =“$ clinic”,如果在表“PATIENTDR”中找到“PATID”,则需要通过fname或lname选择患者 - > clinid“
这是我的查询
SELECT t1.* FROM patient t1
WHERE patlname like '{$search_patlname}%'
AND patfname like '{$search_patfname}%'
AND
(
EXISTS
(SELECT patid FROM patientdr t2 WHERE t2.drid = '{$doctor->id}' AND t2.patid = t1.patid)
OR EXISTS
(SELECT patid FROM patientclin t3 WHERE t3.clinid = '{$clinic->clinid}' AND t3.patid = t1.patid)
)
LIMIT 10
的病人数目可能非常高,数据将使用AJAX,并采取在考虑下面的注释进行检索:
”使用SQL语句由于子查询是RE-RUN fo,所以MySQL中的EXISTS条件非常低效r外部查询表中的每一行。有更有效的方法来编写大多数查询,不使用EXISTS条件。“
是否有更有效的方式来编写此查询,也许我应该打破规则,插入患者fname和lname表patientdr和patientclin ?减少响应时间,或通过限制结果,以10行是提前的所有形式的帮助足够有效的 感谢
如果你内在加入他们,并且没有匹配的id,那么他们将不会返回结果。我想这将是最有效的。 –