C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[1]: SQL 値の変更


(過去ログ 38 を表示中)

[トピック内 4 記事 (1 - 4 表示)]  << 0 >>

■19956 / inTopicNo.1)  SQL 値の変更
  
□投稿者/ みちる (10回)-(2008/06/03(Tue) 01:41:25)

分類:[データベース全般] 

SQLについてご質問させてください。

二つのテーブルがあり、
どちらも主キーがあります。
Aテーブルは1万件のデータがあります。
Bテーブルは空状態です。
Bにデータを追加してAテーブルのキーに無ければinsertあればupdateとしたいですが
件数が多い為キーがあるかどうか探すので時間が掛かってしまいそうな感があります。

時間が掛かってもこれしかないっていうものならいいのですが、どういうやり方がパフォーマンス的に
有効手段なんでしょうか。
お願い致します。
引用返信 編集キー/
■19957 / inTopicNo.2)  Re[1]: SQL 値の変更
□投稿者/ はつね (768回)-(2008/06/03(Tue) 03:43:09)
はつね さんの Web サイト
No19956 (みちる さん) に返信
> 二つのテーブルがあり、
> どちらも主キーがあります。
> Aテーブルは1万件のデータがあります。
> Bテーブルは空状態です。
> Bにデータを追加してAテーブルのキーに無ければinsertあればupdateとしたいですが

Bテーブルにデータを追加したあとに、バッチ処理でAテーブルに転記するのでしょうか。
それともBテーブルに追加すると同時にAテーブルに転記するのでしょうか。

特定のRDBMSではなくSQL全般ということであれば、地道にデータの有無のチェックとINSERT/UPDATE
をやっていく方法になると思います。

引用返信 編集キー/
■19960 / inTopicNo.3)  Re[2]: SQL 値の変更
□投稿者/ やじゅ (432回)-(2008/06/03(Tue) 09:25:32)
> ■No19956 (みちる さん) に返信
>二つのテーブルがあり、
>どちらも主キーがあります。
>Aテーブルは1万件のデータがあります。
>Bテーブルは空状態です。
>Bにデータを追加してAテーブルのキーに無ければinsertあればupdateとしたいですが
>

oracle9i以降なら、 MERGE = UPDATE + INSERT があります。
http://www.shift-the-oracle.com/sql/merge.html

引用返信 編集キー/
■19990 / inTopicNo.4)  Re[1]: SQL 値の変更
□投稿者/ らすかる17 (1回)-(2008/06/03(Tue) 16:30:54)
No19956 (みちる さん) に返信
> SQLについてご質問させてください。
>
> 二つのテーブルがあり、
> どちらも主キーがあります。
> Aテーブルは1万件のデータがあります。
> Bテーブルは空状態です。
> Bにデータを追加してAテーブルのキーに無ければinsertあればupdateとしたいですが
> 件数が多い為キーがあるかどうか探すので時間が掛かってしまいそうな感があります。

一件ずつ処理したいのであれば、
> oracle9i以降なら、 MERGE = UPDATE + INSERT があります。
> http://www.shift-the-oracle.com/sql/merge.html
もしくは、ストアドで存在確認付きの処理を作成する。
全件一括でいいのであれば、
Bに追加した後、
UPDATE A SET 項目1 = B.項目1, 項目2 = B.項目2
FROM A
INNER JOIN B
ON A.キー = B.キー
INSERT A
SELECT B.キー, B.項目1, B.項目2
FROM B
WHERE NOT EXISTS (SELECT *
FROM A
WHERE A.キー = B.キー)
みたいな感じかなぁ・・・
ご参考までに・・・
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -