我在SQL中编写了一个查询,用于从表中选择一些列。我的问题是,当我在Oracle 10g中执行此查询时,大约需要7秒,但下次执行时在几个毫秒内。如果我改变where子句,则需要5秒以上。 ? 我怎么能在第一时间加速这个查询的查询是这样的:Oracle低速首次执行
SELECT Id,Qflag, LetterId, LetterNo, LetterDate, InstanceDate, ViewDate, DeadlineDate
FROM VWLETTERINSTANCESEARCH
WHERE (QFLAG IS NULL OR QFLAG = 0) AND
EXISTS(SELECT * FROM VWLETTERINSTANCESEARCH VW
where PARENTINSTANCEID=VWLETTERINSTANCESEARCH.Id AND refSenderId=1947)AND
EXISTS(SELECT * FROM LetterInstances ChildInstance, Folders
WHERE ChildInstance.ParentInstanceId=VWLETTERINSTANCESEARCH.Id AND
ChildInstance.FolderId=Folders.Id AND Folders.OwnerId=23) AND
OwnerId IN (SELECT StaffId FROM vwStaffUsers WHERE UserId=2 AND Deleted=0)
如何使用'explain plan'? –
我没有使用它,我不知道这是什么。 – Amin
看看它。它会帮助你理解更好的Hoy查询将在服务器上运行。 –