【发布时间】:2016-08-29 09:27:51
【问题描述】:
我有一个执行需要 3.5 秒的存储过程。 我的 sp 在下面:
CREATE OR REPLACE PROCEDURE ProcTest (columnNumber IN VARCHAR2,
TG OUT VARCHAR2)
IS
stmt VARCHAR2 (1000);
BEGIN
TG := 't' || TO_CHAR (SYSDATE, 'YYYYMMDDHH24MISS') || columnNumber;
stmt :=
'CREATE GLOBAL TEMPORARY TABLE ' || TG
|| ' ON COMMIT PRESERVE ROWS AS (SELECT * FROM USER1.Tbl WHERE CHARGINGPARTY='
|| columnNumber
|| ')';
EXECUTE IMMEDIATE stmt;
END;
我执行这部分 (CREATE GLOBAL TEMPORARY TABLE ' || TG || ' ON COMMIT PRESERVE ROWS AS (SELECT * FROM USER1.Tbl WHERE CHARGINGPARTY=' || columnNumber || ')' ) 在 sql developer 中,它需要 0.2s,但是当我执行 sp 时,需要 3.2。
我在我的表上创建了一个索引(USER1.Tbl), 当我在创建索引之前在 sql developer 中运行创建表查询时,花了 3.2 秒。
我的问题是: sp 是否使用索引?或者我怎样才能强制 sp 使用索引???
【问题讨论】:
标签: oracle stored-procedures indexing