哪一个更优化?

ckx4rj1h  于 2021-06-03  发布在  Sqoop
关注(0)|答案(1)|浏览(427)

我正在尝试使用sqoop从oracle11g数据库中提取数据。我没有pl/sql背景。我必须根据某个记录类型和starttime筛选一个大表上的记录,然后在另一个表上为同一starttime执行联接(表2中的所有记录都与从表1筛选的记录类型相同)。有人能帮我解释一下哪个查询消耗的进程更少,为什么?
此外,联接是否会根据starttime(基于联接条件或仍将解析整个表)来过滤表2上的记录,或者我需要为同一个表添加另一个过滤条件?
查询1:

Select t2.field1, t2.field2 ..... t1.some_field 
FROM table1 t1 
INNER JOIN table2 t2 ON 
(
t1.field3='certain value' AND 
t1.END_TIME >= TO_DATE('20160428 16','YYYYMMDD HH24') AND t1.END_TIME < TO_DATE('20160428 17','YYYYMMDD HH24') AND t1.START_TIME = t2.START_TIME AND 
t1.field2=t2.field7) 
WHERE $CONDITIONS

查询2:

Select t2.field1, t2.field2 ..... t1.some_field 
FROM table1 t1 
INNER JOIN table2 t2 ON 
(t1.START_TIME = t2.START_TIME AND 
t1.field2 = t2.field7) 
WHERE 
t1.field3 = 'certain value' AND t1.END_TIME >= TO_DATE('20160428 16','YYYYMMDD HH24') AND t1.END_TIME < TO_DATE('20160428 17','YYYYMMDD HH24') AND 
$CONDITIONS
jmp7cifd

jmp7cifd1#

有人能帮我解释一下哪个查询消耗的进程更少,为什么?
为每个查询生成一个解释计划,并对它们进行比较—您将确定每个查询的成本。
https://docs.oracle.com/cd/b10501_01/server.920/a96533/ex_plan.htm#16889
只需运行两个命令:
EXPLAIN PLAN FOR your_query SELECT * FROM table( DBMS_XPLAN.DISPLAY ) 您可以将解释计划附加到问题中,然后对其进行进一步分析,以发现问题并建议如何优化这些查询。

相关问题