- 締切済み
ソートの最適化の方法
mySQL5.0.45で、ある500万件以上のテキストデータをインポートし、ソートの上、データのエクスポートを行う作業をしています。 以下のようにテーブルを作り、 create table test ( seq int8, sid char(028), pay int, sp1 int ) type=Myisam; alter table test add primary key ( seq ); LOAD DATA ~で取り込み SELECT * FROM test ORDER BY sid ; ソートを効率よく行うため、my.iniを修正し (1)tempを空きドライブに移動 (2)作業スペースの確保 key_buffer_size=256M sort_buffer_size=3000M 処理をまわしましたが、ERROR5(HY000) out of memory (needed 695000000byte)で落ちてしまいます。 修正不足があるのでしょうか。 また、win2000スタンドアロンベースでトランザクションを気にする必要もないため、myisam流しているのですが、エラー発生までに5時間以上かかります。ソート対象件数の増加も考えており、先の修正不足を含め、最適化(高速化)の方法を教えていただきたいのですが。
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- chukenkenkou
- ベストアンサー率43% (833/1926)
回答No.3
noname#140971
回答No.2
noname#140971
回答No.1
補足
ありがとうございます。 正しく理解できていないかもしれませんが、インポートのあと create index test_idx1 on test(sid) ; SELECT * FROM test WHERE sid>=' ' ORDER BY sid ; EXPLAIN test ; このあとエクスポート・・・ として、確かにエラーは出ませんでした。ただ、ソートしたデータのエクスポートという目的は達成できていません。 indexが用意されるということだけだとしたら、データの序列の示されているindexをテキストでエクスポートしてソートの代わりに使うことも考えましたが、いかんせんindexのエクスポートの手順がわかりません。 手立てがあれば教えていただけないでしょうか。