1. 程式人生 > >oracle資料庫中,欄位型別不一致,導致查詢慢

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='主訴'