【发布时间】:2014-06-02 22:06:09
【问题描述】:
INSERT INTO <TABLED>
SELECT A.* FROM
<TABLEA> A WHERE A.MED_DTL_STATUS='0'
AND A.TRANS_ID
NOT IN
(
SELECT DISTINCT TRANS_ID_X_REF FROM <TABLEB>
UNION
SELECT DISTINCT TRANS_ID FROM <TABLEA> WHERE ADJUSTMENT_TYPE='3'
);
该表有 250 多列。 Select 语句将返回超过 300000 条记录。上面的查询运行了很长时间。我从未进行过性能调整。有人可以帮我调整一下,或者给我一些关于如何调整 oracle 查询的好链接吗?
提前致谢。
【问题讨论】:
-
调优,一般来说,是很多很多书籍的主题......不过,最简单的起点是生成并发布一个查询计划。告诉我们哪些索引可用。告诉我们您的谓词的选择性。您的查询计划中的基数估计是否大致正确?如果不是,您的统计数据是否准确?
-
看看你使用的任何工具中的查询计划,看看它说了什么。你多久这样做一次?
-
我没有使用任何索引。
-
@TonyHopkinson:一个月两次。
-
好吧,一些索引会是一个好的开始,虽然你每个月只做两次,但草率的努力似乎会浪费资源......
标签: sql performance oracle