更新查询

时间:2016-04-12 12:53:30

标签: sql oracle performance sql-update database-tuning

我的简单更新查询执行时间太长。 我只为1k记录执行了大约1000万条记录。

声明是这样的:

UPDATE tab
   SET col1= 'yes',
       col2 = 'yes'
 WHERE col7 ||'_'|| col8 = 'VAL_0'
   AND col10 = 'NA'

此声明大约需要70分钟才能执行。

我还在col7 ||'_'|| col8创建了索引。 虽然需要这么长的时间。

编辑:这里'VAL_0'来自其他结果集(数据表)

是否有任何建议,以便我可以更快地运行查询。我尝试在(col10)和on(col7 ||'_'|| col8)上使用索引,但是执行需要花费很多时间。 你建议的其他调音技术?

由于

1 个答案:

答案 0 :(得分:1)

这是查询:

UPDATE tab
   SET col1= 'yes',
       col2 = 'yes',
 WHERE col7 ||'_'|| col8 = 'VAL_0' AND col10 = 'NA'

tab(col10)上的索引开始。这可能有所帮助。

如果可以,请将查询更改为:

UPDATE tab
   SET col1= 'yes',
       col2 = 'yes',
 WHERE col7 = 'VAL'  AND col8 = '0' AND col10 = 'NA';

(注意:如果0实际上是一个数字,请使用'0'代替col8。)

然后在tab(col10, col7, col8)

上创建索引