oracle資料庫中,欄位型別不一致,導致查詢慢
最近一個WEBSERVICE突然變慢了,後查詢發現,後臺查詢也非常慢(記錄條數800多萬),索引也有,如下語句
SELECT P.ID,P.RECORD_ID,P.KEY_NAME,P.KEY_CONTENT
FROM MED_EMR_PATIENT_RECORD R,MED_EMR_RECORD_EXTRACTINFO P
WHERE R.ID = P.RECORD_ID
AND R.PATIENT_ID='55'
AND R.VISIT_ID='1030951729'
AND P.KEY_NAME='主訴'
執行計劃中,發現MED_EMR_RECORD_EXTRACTINFO 是全表掃描
發現MED_EMR_PATIENT_RECORD表的id為nvarchar2,MED_EMR_RECORD_EXTRACTINFO 的reocrd_id為varchar2,
由於表資料量較大,更改欄位型別較為困難,將查詢語句改為以下,速度馬上提升很多:
SELECT P.ID,P.RECORD_ID,P.KEY_NAME,P.KEY_CONTENT
FROM MED_EMR_PATIENT_RECORD R,MED_EMR_RECORD_EXTRACTINFO P
WHERE to_char(R.ID) = P.RECORD_ID
AND R.PATIENT_ID='55'
AND R.VISIT_ID='1030951729'
AND P.KEY_NAME='主訴'