我有一些我认为是一个奇怪的问题。通常情况下,我认为如果我放置一个限制(以便处理更少的行),Query应该会持续更少的时间。但我不知道为什么,事实并非如此。也许我错了,但我没有得到错误;该查询似乎运行到'无限'。查询时间比'没有'更高
这是查询
SELECT
A.ENTITYID AS ORG_ID,
A.ID_VALUE AS LEI,
A.MODIFIED_BY,
A.AUDITDATETIME AS LAST_DATE_MOD
FROM (
SELECT
CASE WHEN IFE.NEWVALUE IS NOT NULL
then EXTRACTVALUE(xmltype(IFE.NEWVALUE), '/DocumentElement/ORG_IDENTIFIERS/ID_TYPE')
ELSE NULL
end as ID_TYPE,
case when IFE.NEWVALUE is not null
then EXTRACTVALUE(xmltype(IFE.NEWVALUE), '/DocumentElement/ORG_IDENTIFIERS/ID_VALUE')
ELSE NULL
END AS ID_VALUE,
(select u.username from admin.users u where u.userid = ife.analystuserid) as Modified_by,
ife.*
FROM ife.audittrail ife
WHERE
--IFE.AUDITDATETIME >= '01-JUN-2016' AND
attributeid = 499
AND ROWNUM <= 10000
AND (CASE WHEN IFE.NEWVALUE IS NOT NULL then EXTRACTVALUE(xmltype(IFE.NEWVALUE), '/DocumentElement/ORG_IDENTIFIERS/ID_TYPE') ELSE NULL end) = '38') A
--WHERE A.AUDITDATETIME >= '01-JUN-2016';
所以我评论说这两个子句尝试(当然每一次每一个)。 而且他们两个发生相同的;该查询运行很长时间,我不得不放弃它。
你知道为什么会发生这种情况吗?我怎么可能用不同的方式来限制?
例如,AUDITDATETIME字段的值是'06 -MAY-2017'。以那种格式。
非常感谢你提前
有时更多的限制意味着更多的表扫描或更多的连接,这是非常耗时的。 – Lamar
必须有一个'索引'适用于你在更短的时间内获得结果的列 –
更不用说EXTRACTVALUE关于性能的expriive。 – Lamar