哪一个更优化?
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
只需 运行 两个命令:
EXPLAIN PLAN FOR your_query
SELECT * FROM table( DBMS_XPLAN.DISPLAY )
您可以在问题后附加解释计划,可以进一步分析它们以发现问题并建议如何优化这些查询。
我正在尝试使用 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
只需 运行 两个命令:
EXPLAIN PLAN FOR your_query
SELECT * FROM table( DBMS_XPLAN.DISPLAY )
您可以在问题后附加解释计划,可以进一步分析它们以发现问题并建议如何优化这些查询。