在我们的Oracle 12c数据库(在Oracle Supercluster上作为可插拔数据库运行)中极其缓慢(耗时数小时)的查询中需要帮助
select * from (
select userQuery.*,rowNum offset from(
SELECT
ELEMENT.element_ID
ELEMENT.element_creation_date
ELEMENT.element_identifier,
ELEMENT.element_status,
ELEMENT.system_code,
ea.timestamp_value as TimeLimit,
ELEMENT.first_ticket
FROM ELEMENT
LEFT JOIN element_attribute ea ON ELEMENT.element_ID = ea.entity_instance_id1 AND ea.attribute_id = 72
WHERE 1 = 1 AND ELEMENT.PURGE_DATE > SYSDATE ORDER BY ELEMENT.element_creation_date DESC) userQuery
where ROWNUM <=50) where offset >=1;
一些注意事项-
我可以进一步检查的任何内容。我不理解查询本身可以编写得更好(更简单)以获得相同的结果,但是查询是供应商应用程序的一部分,我们无法更改它。在我们的测试环境中,同一个查询具有与生产相同的近似表大小,相同的分区和相同的索引,其工作速度要快得多。测试环境中唯一的不同是ELEMENT和ELEMENT_ATTRIBUTE表上的DML(更新/插入)的数量与生产相比要少得多。谢谢。