
テーブル1のレコードを全件取得し、取得したレコードの特定の項目を一件ずつチェックし、テーブル2の値を更新する処理を考えています。
しかし、テーブル1のレコード数が8万件存在するため、一気に全件を取得するのはまずいことになるのではと危惧しています。
そこで、fetch first ~ rows を使用するため、テーブル1に項目を追加し、更新が済んだらその項目にフラグを立てるような処理も考えましたが、
たった一度の処理のためにテーブルに項目を追加するのもどうかなと思っています。
1000件くらいずつ順番に取得できる良い方法があったら教えてください。
よろしくお願い致します。
ちなみにデータベースはDB2を使用しています。
No.1ベストアンサー
- 回答日時:
rownumber() over() を使えばできると思います。
例えば、hogeテーブルの、1件目から1000件目までを取得するには次のようなSQL
SELECT t.cl1,t.rownum FROM (SELECT cl1,rownumber() over (ORDER BY cl2) as rownum FROM hoge) AS t WHERE rownum between 1 and 1000 ORDER BY rownum
1001件目から2000件目までを取得するには次のようなSQL
SELECT t.cl1,t.rownum FROM (SELECT cl1,rownumber() over (ORDER BY cl2) as rownum FROM hoge) AS t WHERE rownum between 1001 and 2000 ORDER BY rownum
・・・というように。
ただし、ここでは cl2 で ORDER BY した結果に番号を振っています。
2回のSQLが思い通りに行くためには ORDER BY した結果が常に同じである必要があると思います。
hogeテーブルの全ての項目で ORDER BY すれば間違いないということになると思います。
返信が遅くなってしまってすみません。
ものすごく複雑なSQLですね。
ROWIDらしきものを作成するということでしょうか。
参考にしてやってみます。
ありがとうございました。

No.3
- 回答日時:
条件にマッチした時だけ「テーブル2の値を更新する」わけですから、その条件で絞り込んだ(SQL文を書いた)方が処理が速いのでは?
返信が遅くなってしまいましてすみません。
おっしゃるとおり条件で絞り込んだ方がいいのですが、理由がありまして全件処理をしなくてはならないのです。
ご意見ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
大量データの取得処理について
-
列の既定値を取得したい
-
db2にて数値を3桁文字にて出力...
-
グループ化したいのですが
-
PostgreSQL:ラジオボタンを用い...
-
ACCESS2002のupdateの副問合せ...
-
データを削除しても表領域の使...
-
postgreSQLのint型は桁数指定が...
-
Viewにインデックスは張れ...
-
ORA-00959: 表領域'****'は...
-
Data Pump で大量データインポ...
-
oracleのimpdpでORA-39166
-
CLOB型へのINSERT
-
datapumpの実行方法について
-
特定のスキーマのテーブルを一...
-
ACCESS 複数テーブル・複数フィ...
-
Access レコードを追加できませ...
-
異なるスキーマからデータを抽...
-
検索結果の列数を動的に変更したい
-
Transactionで待機状態になりま...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
大量データの取得処理について
-
列の既定値を取得したい
-
SELECT文で時間軸を行で取得する
-
db2にて数値を3桁文字にて出力...
-
ビューテーブル
-
オラクルテーブルで受け付けな...
-
テーブル定義を調べるには
-
Sybaseにてupdate時に特定のInd...
-
ACCESSエラー「制限されたデー...
-
ACCESSのWHERE文でのAND40個制限
-
ACCESSのテーブルを毎日定刻に...
-
PostgreSQL:ラジオボタンを用い...
-
SQL文のテーブルについて
-
DB2のSQLコマンドについて教え...
-
ACCESS2002のupdateの副問合せ...
-
ACCESS2000で更新のあったテー...
-
SQLServerのテーブル定義書(?...
-
SQLite C/C++ でのテーブル数...
-
データを削除しても表領域の使...
-
Viewにインデックスは張れ...
おすすめ情報