アプリ版:「スタンプのみでお礼する」機能のリリースについて

現在1000万件近くデータがあるテーブルをパフォーマンス向上のため、パーティション化することを考えています。
環境は、Oracle10gです。
一旦、パーティション・テーブルを作成した後、データを移行する必要がありますが、
その方法に以下を考えました。

 ・Accessのクエリを使って「追加」
 ・ObjectBrowserでInsert文を出力し、それでInsert

膨大な件数ですので、どちらにしろ時間がかかります。
どちらかというと、後者のほうがいいのかなぁと思いましたが…。

もしこれ以外に有効な方法(10gに用意されているツール等)がありましたら、ご教授願えませんでしょうか?

A 回答 (2件)

insert into 移行先 select 項目名 from 移行元


のインサート文ではダメなの?

テーブル名が同じなら
create table 移行元_wk as select * from 移行元
のようにして退避しておくとか。

DBの外に出してしまうといろいろと面倒くさいので、私はパーティション化するときはそのようにしています。
    • good
    • 0
この回答へのお礼

試しにwhereでデータを限定して実行したところ、
数分で終了しました。
下手に外に出すよりこのほうがいいのですね。

ありがとうございました。

お礼日時:2006/12/05 10:48

一番簡単な方法は、邪魔になる参照制約を無効にして、



rename emp to emp_bak;
create table emp ( ...... ) partition by ... ( ...... );
insert into emp select * from emp_bak;
drop table emp_bak;

最後に、emp 表に索引や制約を付けて完了!
っていうところでしょうか。

insert の前に索引を付けてしまうと、データ件数が多い場合、insert に膨大な時間がかかってしまう恐れがあります。
    • good
    • 0
この回答へのお礼

この方法で考えようと思います。
ありがとうございました。

お礼日時:2006/12/05 10:50

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

関連するカテゴリからQ&Aを探す