【发布时间】:2015-10-12 19:16:05
【问题描述】:
如果我在 SQL Server 中,我只会查看执行计划,但我无权在我的 Oracle 系统中执行此操作,并且在运行时我看不到任何速度差异。有什么想法吗?
SELECT c_ID, c_Date
FROM Table1
WHERE CUR_IND = 'Y'
UNION
SELECT c_ID, c_Date
FROM Table1
WHERE LAST_UPDATE_DATE BETWEEN TO_DATE('2015-07-01','YYYY-MM-DD') AND TO_DATE('2015-07-20','YYYY-MM-DD')
AND c_ID NOT IN (SELECT c_ID FROM Table1 WHERE CUR_IND = 'Y')
我想我的主要问题似乎很明显,因为联合将在此查询上运行不同的,第二个选择中的子查询是否有用?这将在第一次选择时返回大约 400K 记录,在第二次选择时返回大约 10K,使用子查询,第二次只返回 2。无论有没有它,我都会在相同的时间内得到相同的结果。 (希望我能看到执行计划)
【问题讨论】:
-
由于您在两个联合查询中选择不同的列(
c_DatevsCHG_DT),我认为删除子查询并不能保证给您相同的结果。跨度> -
@sstan 我的错误应该是一样的......正在改变
标签: sql oracle optimization plsql