A SELECT
查询在我的存储过程中需要3秒在查询的表没有索引时执行。 均为,执行查询时Toad编辑器以及调用存储过程时都是如此。 解释计划显示全表扫描完成。存储过程不使用表上的可用索引(Oracle)
当添加一个索引,在蟾蜍编辑返回相同的查询结果瞬间(只是几毫秒)。 解释计划显示使用索引。但是,即使存在索引,查询在存储过程中仍然需要3秒。它看起来像查询在存储过程中执行时使用全表扫描,尽管有索引可加快速度。 为什么?
我已尝试索引不同列与不同的顺序。在所有情况下,相同的结果仍然存在。
在存储过程中,使用BULK COLLECT INTO
收集查询结果。这是否有所作为? 另外,存储过程位于包中。
查询是一个非常简单SELECT
声明,就像这样:
SELECT MY_COL, COUNT (MY_COL)
/* this line is only in stored proc */ BULK COLLECT INTO mycollection
FROM MY_TABLE
WHERE ANOTHER_COL = '123' /* or ANOTHER_COL = filterval (which is type NUMBER) */
GROUP BY MY_COL
ORDER BY MY_COL
** ** SHOW执行计划后加入指数之前。要了解更多信息,请跟踪会话并发布日志详细信息。 – 2014-10-20 08:55:13
我已经很好地总结了执行计划的结果。该问题不会从显示详细输出或其他日志详细信息中获得任何其他信息。无论如何,我已经解决了这个问题。也不需要大喊':)' – ADTC 2014-10-20 09:32:53