我有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,那麼他們將不會返回結果。我想這將是最有效的。 –