私は3つのテーブルを割り当てています。 最初のテーブル: 患者:patid、fname、lname、recordnum。 PATIENTDR:patid、drid、 患者:patid、clinid。IDが2番目または3番目のテーブルに高効率で存在する場合、最初のテーブルから選択する方法は?
DRID = "$ docotr-> id"またはCLINID = "$ clinicの場合は" PATIENTDR "テーブルの" PATID "がテーブル" PATIENTDR "にある場合、患者を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外部クエリのテーブル内のすべての行。 "012"を使用しないほとんどのクエリを書くことがより効率的です "
このクエリを書くにはもっと効率的な方法がありますか?ルールを破って患者の名前と名前をpatientdrとpatientclinのテーブル、または10行に結果を制限することにより、応答時間を短縮することが十分に効率的である事前にヘルプのすべての種類の おかげ
これらを内部結合すると、IDに一致するものがない場合、それらは結果に返されません。私はそれが最も効率的だと思います。 –