ホーム   フォーラム   FAQ
 
メインメニュー
ログイン
ユーザー名:

パスワード:


パスワード紛失

別のテーブルの条件を見てレコード削除

  • このフォーラムに新しいトピックを立てることはできません
  • このフォーラムではゲスト投稿が禁止されています
depth:
0
前の投稿 - 次の投稿 | 親投稿 - 子投稿.1 .2 | 投稿日時 2008-10-22 16:28 | 最終変更
bluemen  新米   投稿数: 3
お世話になります。

参照用テーブルに抽出条件を設定し、その条件にあるレコードと
共通のキーを持つメインテーブルのレコードを削除しようと思っています。
(作業後は参照用テーブルからも削除)
現在メインは約25万件、参照用は約4万件あります。
参照用1レコードに対して、メイン側は数レコード該当します。

このような要件でメインのレコード削除が早く終わる方法を
教えて下さい。(色々やりましたがどれも遅くて...)

宜しくお願いします。
投票数:0 平均点:0.00
depth:
1
前の投稿 - 次の投稿 | 親投稿 - 子投稿.1 | 投稿日時 2008-10-22 16:45
sk0014  半人前   投稿数: 37
参照用テーブル削除が親タスクで、メインテーブル削除が子タスクのツリー構造になっていると思いますが、その場合、肝心なのは、親タスクのDBテーブルでメインテーブルをオープンして置きます。
既にそうなっていますでしょうか?

MagicV9以降+SQLデータベースですと、組込みSQLでDELETE文を発行すれば、あっという間に終わるんですけどね。
投票数:0 平均点:0.00
depth:
2
前の投稿 - 次の投稿 | 親投稿 - 子投稿.1 | 投稿日時 2008-10-22 17:00
bluemen  新米   投稿数: 3
sk0014さん

メイン削除がひとおおり終わってから、参照用を削除するつもりです。

なお件数を間違っていました。
(メンテ用DB見てました)
投票数:0 平均点:0.00
depth:
3
前の投稿 - 次の投稿 | 親投稿 - 子投稿.1 .2 | 投稿日時 2008-10-22 17:19
sk0014  半人前   投稿数: 37
メインテーブル側の範囲付けをする為のキーは適切ですか?
あと、DBテーブルの共有=N(なし)、オープン=F(高速)
子タスクのタスク常駐=Yにするとかはどうですか?
投票数:0 平均点:0.00
depth:
4
前の投稿 - 次の投稿 | 親投稿 - 子投稿.1 .2 | 投稿日時 2008-10-22 17:33
bluemen  新米   投稿数: 3
引用:

sk0014さんは書きました:
メインテーブル側の範囲付けをする為のキーは適切ですか?
あと、DBテーブルの共有=N(なし)、オープン=F(高速)
子タスクのタスク常駐=Yにするとかはどうですか?

sk0014さん
どうも私の説明&理解が不十分のようで...

まず第一に参照用テーブルは今回削除しません。
その上でまず分からないのがどちらを上位タスクにするのかです。
私は件数が少なく照合キーに重複の無い参照用テーブルを親にし、
それを条件で絞り込んでから回して、
子タスクでそれに該当するメインテーブルのレコードを削除するように
作成しました。

しかし先輩は実際に消すメインテーブルを親にして参照用テーブルと
照合すべきと言いました。

このあたりまだ迷っています。

DBテーブルの設定は参照にさせていただきます。
投票数:0 平均点:0.00
depth:
5
前の投稿 - 次の投稿 | 親投稿 - 子投稿なし | 投稿日時 2008-10-22 17:40
sk0014  半人前   投稿数: 37
メインテーブルを親タスクにしたら、全件チェックしなければならず、遅くなります。

bluemenさんの考え方の方が、常套手段です。
投票数:1 平均点:10.00
depth:
5
前の投稿 - 次の投稿 | 親投稿 - 子投稿なし | 投稿日時 2008-10-23 9:27
Take  一人前   投稿数: 124
bluemenさん
必ずしもタスクを親子の構造にする必要はないかと思います。
メインのテーブルをバッチで処理するタスクの中で参照用テーブルをリンクし、レコード削除条件を設定すれば一つのタスクで処理可能なのではないでしょうか?
ただし、処理スピードについてはなんとも言えませんが...
投票数:0 平均点:0.00
depth:
4
前の投稿 - 次の投稿 | 親投稿 - 子投稿なし | 投稿日時 2008-10-23 9:09
kawabata  一人前 居住地: 群馬  投稿数: 86
こんにちは。

他のバージョンは分かりませんが、
V7の場合、子タスクのタスク常駐=Yに
不具合があったと記憶しております。
投票数:0 平均点:0.00
depth:
1
前の投稿 - 次の投稿 | 親投稿 - 子投稿なし | 投稿日時 2008-10-23 17:13
hiro  長老 居住地: 三重  投稿数: 188
みなさん こんにちは

大量のデータ操作はインデックスが絡むと思います。
通常オープンの場合、削除毎にインデックスが編集されて時間がかかっていると思います。
オープンモードを再索引にして、削除後にインデックスの再作成を行うようにしてはどうでしょうか?
インデックスの再作成のメッセージがでますが・・

間違っていたら すいません
投票数:0 平均点:0.00

  条件検索へ


Copyright (C) Magic Software Japan K.K. All Rights Reserved.
個人情報保護方針 会員規約