为什么小弟我这个查询语句很慢?查一条数据都需要事多

为什么我这个查询语句很慢?查一条数据都需要事多
初学oracle,这是我写的语句,结果可以查询出来,可是很慢,怎么样解决?


SELECT DISTINCT
       TO_CHAR(VA.COMPANYHIREDTM,'YYYY/MM/DD') AS 进入集团日期,
       VA.PERSONNUM AS 工号,
       VA.PERSONFULLNAME AS 姓名,
       VA.HOMELABORLEVELDSC3 AS 人员类别,
       VA.HOMELABORLEVELDSC1 AS 事业本部,
       VA.HOMELABORLEVELDSC2 AS 部门,
       P2.PERSONCSTMDATATXT AS 职务,
       P3.PERSONCSTMDATATXT AS 职级,
       P1.PERSONCSTMDATATXT AS 工序,
       TO_CHAR(VT.APPLYDATE,'YYYY/MM/DD') AS 日期,
       OFILM_FN_COMENTDSC(VT.PERSONNUM,VT.APPLYDATE) AS 班别,
       TO_CHAR((OFILM_FN_INPUNCH1(VT.PERSONNUM,VT.APPLYDATE,1)), 'HH24:MI') AS 上班时间1,
       '' AS 下班时间1,
       '' AS 上班时间2,
       TO_CHAR((OFILM_FN_OUTPUNCH2(VT.PERSONNUM,VT.APPLYDATE,1)),'HH24:MI' ) AS 下班时间2,
       TO_CHAR((OFILM_FN_SHIFTENDTIME(VT.PERSONNUM,VT.APPLYDATE)),'HH24:MI' ) AS 标准下班时间,
       OFILM_FN_STATUS(VT.PERSONNUM,VT.APPLYDATE) AS 出勤状态,
       OFILM_FN_OVERTIME(VT.PERSONNUM,VT.APPLYDATE) AS 加班时间
FROM VP_TOTALS VT
LEFT JOIN VP_ALLPERSONV42 VA ON VT.PERSONNUM=VA.PERSONNUM
LEFT JOIN mywtkemployee MWE on VT.employeeid=MWE.employeeid
LEFT JOIN PERSONCSTMDATA P1 ON VT.PERSONID=P1.PERSONID AND P1.CUSTOMDATADEFID = 1
LEFT JOIN PERSONCSTMDATA P2 ON VT.PERSONID=P2.PERSONID AND P2.CUSTOMDATADEFID = 6
LEFT JOIN PERSONCSTMDATA P3 ON VT.PERSONID=P3.PERSONID AND P3.CUSTOMDATADEFID = 7
WHERE VA.PERSONID=2
AND APPLYDATE BETWEEN TO_DATE('2014-12-01 00:00:00', 'YYYY-MM-DD HH24:MI:SS') AND TO_DATE( '2014-12-2 23:59:59','YYYY-MM-DD HH24:MI:SS' )
ORDER BY VA.PERSONNUM,TO_CHAR(VT.APPLYDATE,'YYYY/MM/DD')

------解决思路----------------------
其实你可以建临时表,将大表弄成小表,然后小表关联。
------解决思路----------------------
最好能提供下语句的执行计划