2015-11-29 42 views
-1

我有四個表在我的數據庫找到一個的最後一條記錄到許多關係上的MySQL與JOIN

督察:ID,名稱,類型,狀態,電子郵件

州:ID,姓名,父

病人:ID,姓名,年齡,national_code

Patient_Log:ID,patient_id,inspector_id,STATE_ID,呼吸,body_movement,face_movement,插科打諢,咳嗽,角膜,瞳孔,doll_eye,鎮靜,狀態更新

我現在用的這個查詢:

SELECT patient.id, patient.name, patient.age, patient.national_code, 
pLog.id AS pLog_id, pLog.inspector_id, pLog.state_id, pLog.breathing, pLog.sedation, 
inspecor.name AS ins_name, inspecor.type AS ins_type, inspecor.status AS ins_status 
state.name AS state_name 
FROM patient 
JOIN patient_log AS pLog ON pLog.patient_id = patient.id AND pLog.id = 
(SELECT MAX(patient_log.id) FROM patient_log WHERE patient_log.patient_id = patient.id) 
JOIN inspector ON inspector.id = pLog.inspector_id 
JOIN state ON state.id = pLog.state_id 
WHERE pLog.status = 1 
ORDER BY pLog.update DESC 
LIMIT 30 

這個查詢它的工作!我的結果是真的! 但現在我的病人表有1500條記錄,而patient_log表有8000條記錄,這個查詢我在16秒內得到結果!!!!!!

如果我要從我的查詢本節我得到的結果是0.02秒但我的結果不正確的,返回從patient_log第一條記錄:

AND pLog.id = (SELECT MAX(patient_log.id) FROM patient_log WHERE 
patient_log.patient_id = patient.id) 

如何優化我的查詢,以獲得正確的結果呢?

+0

指標加入複合指數始終是一個大面積的樣子。你也有一個相關的子查詢。 'inspector_id' ...'state_id' ,,,'pLog.update' – Drew

+0

此查詢不起作用。請不要提供不正確的信息。這是浪費時間。 – Strawberry

+0

爲什麼不工作?我目前使用它,但效率很低。所以我想優化它...... – mhrezaei

回答

0

嘗試patient_log.patient_idpatient_log.id

相關問題