-1

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

语句是这样的:

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

该语句执行大约需要 70 分钟。

我还col7 ||'_'|| col8为此创建了索引。虽然需要这么多时间。

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

有什么建议可以让我的查询更快地运行。我尝试在 (col10) 和 ( col7 ||'_'|| col8) 上使用索引,但执行起来需要大量时间。您建议的其他调音技术?

谢谢

4

1 回答 1

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'ifcol8实际上是一个数字。)

然后创建一个索引tab(col10, col7, col8)

于 2016-04-12T12:59:05.667 回答