• ベストアンサー

2つの同じDBの比較について

muyoshidの回答

  • muyoshid
  • ベストアンサー率72% (230/318)
回答No.4

こんにちわ。 #3 のmuyoshid です。 > 質問ですが、minusって結構処理時間がかかるような気がしますが、 > 100テーブル×60000レコードくらいだとどのくらいの時間がかかるのでしょうか? 性能については、環境に依存する部分が大きいので何とも言えません。 気になるのであれば、実際に60000レコードの表を作成してSQL の処理時間を 測定されるのが一番だと思います。 サンプルで1組の表を作成して、minus で選択されるレコード件数を調整して 3~4 パターン測定すれば、凡その見当がつくと思います。 後は、「トレース採取 → tkprof → 性能チューニング」と言う流れでしょうか?

legend3738
質問者

お礼

お礼が大変遅くなりました。 実際やってみたんですが、それほど時間がかかりませんでした。2つのDBからお互いにminus文で差分を出力し、それらを秀丸で見比べるという作業で2週間ほどやっていますが、それほど苦労はしていません。 ありがとうございました。

関連するQ&A

  • 異なるDBの値比較方法

    まったく同じジョブの内容でスケジューリング方法を変えて実行した時、その前後でDBの内容が同一であるか検証する方法を考えています。 DBはoracle9、テーブル数は約100強、エクスポートすると約500MBです。 検証方法は、処理前に本番データをエクスポートし、それを検証環境にインポート、検証環境でスケジュールを実行して、まったく同じ結果を得られるかを検証します。 以下の案を思いつきましたが、イマイチぴんときません。何かいい方法を教えてください。 案1 DBをDBリンクで接続し、オブジェクトブラウザのオブジェクト比較機能を使う。 →簡単にできるが、結果を得るの時間がかかりすぎる。 案2 DBをDBリンクで接続し、検証用プロシージャを作成して比較する。 →user_tables, user_tab_columnsなどを使うプロシージャの作成が面倒。 案3 処理実行後に、本番と検証環境でそれぞれテーブルごとにエクスポートし、エクスポートファイルをUNIXでソートした上で、uniqコマンドで比較する。 →これが現実的?

  • BLOB型項目をSQLの検索条件に指定して検索したいのですが。

    BLOB型の項目を持つTableに対して、SQLのSELECT文でBLOB型項目がNull(未設定)のレコードを抽出したいと思っています。 どのようなSELECT文を組めば良いのでしょうか? 方法がわからず困っています。 御教授下さい。 DBはOracle8.1.6、 OSはWindowsサーバ2003です。よろしくお願いします。

  • DBの削除とインポート

    初心者ですが、よろしくお願いいたします。 Win2000 Serverで、Oracle8i Workgroup Serverを使用していますが、今使用しているDBを削除し、まるまるエクスポートしたDBをインポートするのですが、 【削除】 1.『Database Configuration Assistant』の『データベースの削除』を使用すればよいのでしょうか? 2.上記方法で、Oracle8i自体が削除されることはないでしょうか? 3.SQL*PLUSにて削除はできるでしょうか? 又、もしできるようであれば、どのようなステートメントで、何を削除すればよいでしょうか? 【インポート】 1.インポートは、どのようにすればよいでしょうか? 2.SQL*PLUSを使用してのインポートと、他の何かを使用したときの方法と、そのメリット・デメリット教えていただければ幸いです。 よろしくお願いいたします。

  • ファイルDB連携で質問です。

    テーブルと同じレイアウトのテキストファイルを読込んで - 同一キーが存在し、データも同一なら何もしない - 同一キーが存在し、データが変更ならUPDATE文を作成 - 同一キーが存在しなければINSERT文を作成 しファイル出力したいのですが、 どんな手法がベストでしょうか? 私の考えつく方法はどうもDBを活かしきれていない気がします。DBはMySQL4でUNIONも使えるのですが、オラクルブロンズレベルでは思いつかず参っています。 ■テーブル(ファイルレイアウト)key1,key2は複合キー key1 key2 data1   1  0   5   2  3   6 ■処理の流れ ファイルがありテーブルが存在しなければ ファイル読込でテーブルへそのままインポート ↓ ファイルがありテーブルが存在したら、 既存テーブルをリネーム後に、 ファイル読込でテーブルへそのままインポート ↓ インポートしたテーブルを全件SELECTし、 リネームしたテーブルへ1件ずつSELECTマッチ処理を行った結果によりファイルへINSERTやSELECT文を出力していく。 ファイルの行数が多いと相当重い処理になりそうで。。

  • データのエクスポート/インポート

    あるシノニムのデータをエクスポートして、その後、エクスポートしたファイルを一部編集して、インポートしたいと思っています。DBはOracle 9iです。 テーブルのエクスポート/インポートだと、CSEなどのツールで実施できるのですが、シノニムだと同様の操作では実施できませんでした。 初心者でも簡単にできる方法を教えてください

  • DBをまたいで更新

    現在、testDB1とtestDB2というDBが存在します。 それで、testDB1のtable.idとtestDB2のtable2.idを SELECT文で比較して、同じidの場合はtestDB2のtable2.dataに 1という値を格納したいと思っています。 それで、DBをまたいで更新するときの記述が分からず ネットで検索したのですが、うまくヒットしませんでした。 そもそもDBをまたいで問い合わせや更新等はできないのでしょうか? できない場合、代替の方法があったら教えて頂けますでしょうか。 よろしくお願い致します。

  • DB作成パラメータ値

    Oracle 9iを使用しています。 Win2000上で標準パラメータでDBを作成し、アプリケーションを稼動しています。このEXPORTファイルを使用して Win2003で、同じく標準パラメータでDB(同じくOracle9i)を作成し、 DBをインポートするとアーカイブログの空きがない、のエラーとなり、 IMPORTコマンドは異常終了してしまします。 同じOracle 9iでも稼動しているOSにより、各種領域設定はことなるのでしょうか?

  • DB検索について

    (1)PHPにてSQLをコールしてテーブルから情報の取得を行いたいのです。  $cmnd = "select * from table_a where id=01";を実行し(fetch使用)  仮に15件セレクトされたとすると、抽出された15件は  プログラム内のどこに格納されるのですか? (2)また、そのレコードを順じ処理する場合において、終了条件はどの様に  判定したら良いでしょうか?  DB:oracle

    • 締切済み
    • PHP
  • 比較抽出方法(?)

    比較抽出方法(?)は造語です… テーブル名:TMSBTM UARKECD USTCYDIS -------- -------- 00020345 99999999 00032115 00032115 00032115 99999999 00032119 00071000 00032119 00072000 00032119 00073000 00032119 99999999 00032375 00020000 00032375 00021000 00032375 00022000 00032375 00032376 00032375 00032377 00032375 99999999 00032645 00031000 00032645 00032000 00032645 00032647 00032645 00032648 00032645 00032649 00032645 00061000 00032645 00062000 00032645 00063000 00032645 00064000 00032645 00065000 00032645 99999999 00032646 00032646 00032646 99999999 00032815 00032815 00032815 99999999 00032820 00011000 00032820 00012000 00032820 00013000 00032820 00014000 00032820 00015000 00032820 00051000 00032820 99999999 00032985 00032985 00032985 99999999 テーブル名:THJKYF UARKECD USTCYDIS -------- -------- 00032119 00072000 00032119 00073000 00032645 00062000 00032645 00064000 00032645 00065000 00032820 00051000 00032985 00032985 TMSBTMにあって、THJKYFに無いTMSBTMの列名を抽出したい。 イメージとしては select * from TMSBTM where UARKECD,USTCYDISECD != select DISTINCT UARKECD,USTCYDISECD from THJKYF; こんな感じです。トホホです。 Oracle 7.3.3のSqlplusです。 かなりとほほな質問とは思いますがお願い致します。

  • DB2のロック調査

    作成したアプリケーション(SELECTを発行するだけ)が*LOCK開放待ち(?)でTimeOutが発生してしまいました。 他のAPPがどうもテーブルロックをしていたらしいのです。 どのAPPがいつからいつまでロックを掛けていたか?を 調査する方法を教えて下さい。 DB2のバージョンは8?OSはAIX5.x? 詳しく教えてもらえない・・・(原因は不明)すいません。