【发布时间】:2017-04-07 16:19:17
【问题描述】:
以下查询使用了一个较大的 Oracle 表 A 和相对较大的全局临时表 TB:
UPDATE A
SET A.field0 = ( SELECT SUM(TB.field0)
FROM TB
WHERE TB.field1 = A.field1 AND
TB.field2 = A.field2 AND
TB.field3 = 'value' )
WHERE EXIST ( SELECT 1
FROM TB
WHERE TB.field1 = A.field1 AND
TB.field2 = A.field2 AND
TB.field3 = 'value' );
基本上EXIST 条件仅用于检查记录是否存在。现在对于这个查询,如果A.field0 和A.field1 上有索引,但TB 上根本没有索引,它会进行全表扫描还是索引扫描?此外,WHERE 条件是否必要以及它对性能有何影响?
【问题讨论】:
-
决定查询执行计划的因素太多。我们不知道索引、记录数、集群等。请与您的 DBA 交谈或自己评估执行计划。
标签: sql oracle performance indexing query-optimization