-1

単純な更新クエリの実行に時間がかかりすぎます。約 1,000 万件のレコードがあり、そのうち 1,000 件のレコードのみを実行しています。

ステートメントは次のようになります。

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';

(注: ifが実際に数値である場合0の代わりに使用してください。)'0'col8

次に、インデックスを作成しますtab(col10, col7, col8)

于 2016-04-12T12:59:05.667 に答える