在Oracle中,需要在存储过程中多次重用查询结果。想知道临时表是推荐的方式还是其他方式...
首先,我基于某些输入参数创建一个结果集。
然后做一些检查,看看是否有任何结果集行出现在表1中。简单的连接和计数就足够了。如果算
为了获得最佳性能,应该使用临时表还是其他表?
谢谢
根据上次更新,您似乎需要在多个表中进行质的不同插入,并在多个(不同的)测试中使用昂贵查询的结果。
测试和基准测试总是最好的(比较好的方面和坏的方面,以及临时表与其他方法的性能)。我将在这里包括一种替代样式,它只将结果拉入内存,在那里可以根据需要查询(或迭代、计数等)
下面是一个例子:
-示例数据:
CREATE TABLE TABLE_1 (LOREM_IPSUM NUMBER);
INSERT INTO TABLE_1 VALUES (6);
COMMIT;
--保存数据的自定义类型
CREATE OR REPLACE TYPE EXPENSIVE_QUERY_TYPE IS OBJECT(LOREM_IPSUM NUMBER);
/
CREATE OR REPLACE TYPE EXPENSIVE_QUERY_RESULT IS TABLE OF EXPENSIVE_QUERY_TYPE;
/
--示例块:
DECLARE
V_EXPENSIVE_RESULT EXPENSIVE_QUERY_RESULT := EXPENSIVE_QUERY_RESULT();
V_TABLE_1_TEST INTEGER;
BEGIN
SELECT EXPENSIVE_QUERY_TYPE(LEVEL)
BULK COLLECT INTO V_EXPENSIVE_RESULT
FROM DUAL
CONNECT BY LEVEL <= 5;
SELECT COUNT(*) INTO V_TABLE_1_TEST
FROM TABLE_1
WHERE EXISTS(SELECT 1 FROM TABLE(V_EXPENSIVE_RESULT) WHERE LOREM_IPSUM = TABLE_1.LOREM_IPSUM);
IF V_TABLE_1_TEST > 0
THEN
RETURN;
ELSE
INSERT INTO TABLE_1
SELECT LOREM_IPSUM FROM TABLE(V_EXPENSIVE_RESULT)
WHERE MOD(LOREM_IPSUM,2) = 0;
END IF;
END;
/
当TABLE_1最初只有一条值为 6 的记录时,这将插入 2 和 4(因为没有共享数据)。
...PL/SQL procedure successfully completed.
SELECT * FROM TABLE_1;
LOREM_IPSUM
______________
2
4
6
但是如果它在expensive_query中包含任何内容(例如最初包含3和6),则不会插入任何内容:
...PL/SQL procedure successfully completed.
SELECT * FROM TABLE_1;
LOREM_IPSUM
______________
3
6
本文向大家介绍MySQL中关于临时表的一些基本使用方法,包括了MySQL中关于临时表的一些基本使用方法的使用技巧和注意事项,需要的朋友参考一下 临时表可能是非常有用的,在某些情况下,保持临时数据。最重要的是应该知道的临时表是,他们将当前的客户端会话终止时被删除。 临时表中添加MySQL版本3.23。如果您使用的是旧版本的MySQL比3.23,可以不使用临时表,但可以使用堆表。 如前所述临时表将只持
问题内容: 在Oracle中,您可以使用以下方式创建临时表: …这可能很漂亮,因为这会创建一个所有人都可以看到的表,但是一个INSERT插入表中的数据仅对他或她可见。此外,该数据将在事务或会话结束时自动删除(取决于其声明),从而使其他所有人的临时数据不受损害。 但是,在SQL Server中,可以使用以下方式创建临时表: …据我所知,它在功能和功能上与Oracle的实现有本质的不同。该临时表仅对您
我有下面的DB对象和Java程序,当我尝试从Java调用Oracle的存储过程时,我无法得到临时表count.Am缺少一些东西,但我不知道wrong.Please帮助我找到错误code.When我调用的过程使用oracle语句直接在oracleSQL开发人员能够得到临时table.After每次调用插入过程它插入计数,并正确地在Oracle语句调用和Java.But当我尝试使用JDBC时,只有插入
本文向大家介绍对比Oracle临时表和SQL Server临时表的不同点,包括了对比Oracle临时表和SQL Server临时表的不同点的使用技巧和注意事项,需要的朋友参考一下 Oracle数据库创建临时表的过程以及和SQL Server临时表的不同点的对比的相关知识是本文我们主要要介绍的内容,接下来就让我们一起来了解一下这部分内容吧,希望能够对您有所帮助。 1.简介 Oracle数据库除了可以
本文向大家介绍oracle 临时表详解及实例,包括了oracle 临时表详解及实例的使用技巧和注意事项,需要的朋友参考一下 在Oracle8i或以上版本中,可以创建以下两种临时表: 1。会话特有的临时表 CREATE GLOBAL TEMPORARY <TABLE_NAME> ( <column specification> ) ON COMMIT PRESERVE ROWS; 2。事务特有的临