2012-01-03 29 views
0

テーブルのレジスタを更新するSQLクエリを作成しました。このテーブルには約1,500万のレジスタがあります。私は、クエリが前方または後方が、レコード数が15人の以上の何百万人に達したときに、クエリが開始ローリングされている場合V $ transaction.used_uredを参照するには、フィールドをチェックし続けるSQL更新クエリが完了していません

UPDATE temp_conafe 
    set apoyo = trim(apoyo) 
    where cve_status like '%APOYO%'; 

:のような更新ステートメントがあります後方に転がる。

  • アップデートを正常に完了させるにはどうすればよいですか?

私はDBAではなくプログラマーですが、私のレジスタを更新するまでは開発を続けることができません。

+3

問題は何ですか? – JNK

+1

変更を行うためにログスペースが不足しているようです。あなたのアップデートをチャンクして、10個の小さなアップデートを実行し、 'cve_status'以外のフィールドを使用してください。また、実際にデータをトリムする必要があるかどうかを検討してください。クライアントコード内に末尾の空白を取り除くことはできませんか?データ型が(VARCHAR2ではなく)CHARの場合、TRIMは無意味です。データは後で空白で保存されます。 –

+0

@JonathanLefflerあなたのアドバイスに感謝、私はすべてをチェックします。私はスペースについても考えていたが、確かにしたい。 – BRabbit27

答えて

2

あなたの取引が大きくなるように見えます。場所に別の制限句を追加してみてください。 IDフィールドがある場合は、次のように追加することができます。

where cve_status like '%APOYO%' 
AND id > 1 AND id < 100000 

それに応じて範囲を変更して複数回実行する必要があります。これがオプションでない場合は、DBAに相談して、より多くのリソースを提供するように依頼する必要があります。

+0

ありがとう、私は私のトランザクションを短くしようとし、私たちは常にそのような大規模なデータでデータ分析を行っている私のDBAに話をするつもりです。 – BRabbit27

関連する問題