哪一个更优化?

Which of these is more optimized?

我正在尝试使用 sqoop 从 oracle 11g 数据库中提取数据。 我没有 PL/SQL 背景。我必须根据某些记录类型和开始时间过滤一个大 table 上的记录,然后在同一开始时间对另一个 table 进行连接(table 中的所有记录都是相同的从 table1) 过滤的记录类型。 有人可以帮我解释一下哪个查询会消耗更少的进程吗?为什么?

此外,连接是否可以根据开始时间过滤 Table2 上的记录(基于连接条件或仍将解析整个 table),或者我需要为此添加另一个过滤条件?

查询 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

Can someone please help me and explain which of the query will be consuming less processes and why?

为每个查询生成一个解释计划,并比较它们 - 您将看到每个查询的成本。

https://docs.oracle.com/cd/B10501_01/server.920/a96533/ex_plan.htm#16889

只需 运行 两个命令:

  1. EXPLAIN PLAN FOR your_query
  2. SELECT * FROM table( DBMS_XPLAN.DISPLAY )

您可以在问题后附加解释计划,可以进一步分析它们以发现问题并建议如何优化这些查询。