• 締切済み

クロス集計のスピードアップ

Accessで数十万件のデータのクロス集計をおこなおうと思っているのですが1日程度時間がかかってしまいます。以下のプロセスでスピードアップが図れそうな事項がございましたらご教授ください。 -------------------------------------------- (1)テーブル「A」とテーブル「B」(両方とも数十万件)を「A」のIDをキーとして「B」のIDと紐付けし、テーブル「A」の全項目とテーブル「B」のある1項目をクエリを用いて出力します。 (2)(1)のクエリをテーブルに変換する。(←ここで非常に時間がかかってしまいます。) (3)(2)についてクロス集計を行う。 -------------------------------------------- (2)でテーブルに変換せずにクロス集計を行っても非常に時間がかかってしまいます。素人質問で大変恐縮ですが何とぞご教授ください。 よろしくお願いいたします。

みんなの回答

  • imogasi
  • ベストアンサー率27% (4737/17070)
回答No.2

人類は、使おうとするときに、便利なように、データベースというものを考え作り上げてきました。しかしそのため仕掛けを作る時間、用意する時間も運用する時間もかかります。パソコン他のコンピュタの処理能力〔入出力を含めて)が驚異的に進歩し、それらのデメリットを乗り越えてきました。 パソコンができる前は、大型機のシステムなどで、磁気テープベースの処理が多く、会社ではその当時も何十万件のレコードがあり、集計(統計)表という名のクロス集計表が作られていました。 その際はソート法が多かったと思います。ソート法とは、例えば店別・商品別統計なら、店別にソートして、商品別のポケット(集計結果を持つための変数)を用意し、1レコードを読んでは、該当ポケットに足しこんで行ききました。別の店のレコードが現れると、吐き出し(印刷)をしてました。 これだと質問の例で言うと、必要時間は A.50万件のソート時間 B.ソート後の50万件のレコードの読み込み時間 で済みます。(演算時間等は微々たるものと思う)。 40万件のソートはACCESSではどれほどかかるでしょうか。 こういう原初に返った方法を私なら試してみたい。 しかし質問者はプログラムができないようなので、誰か相談する方でもいれば一度、相談してみてください。 集計という単目的のためには、ストレートな適当な処理ロジックがあるということを言いたいのです。(データベースシステムは単目的ではないのは判りますね)

bird66
質問者

お礼

ご回答ありがとうございました。参考にさせていただきます。

すると、全ての回答が全文表示されます。
  • pbforce
  • ベストアンサー率22% (379/1719)
回答No.1

お望みの回答ではないと理解していますが回答させていただきます。 素直にアクセスではなくデータベースを使った方がいいと思います。 SQL2005Expressなどいかがでしょうか?充分改善されると思います。

bird66
質問者

補足

ご回答大変ありがとうございました。 今回はAccessでなんとか乗り切ることにしました。 今後の為に「SQL2005Express」について詳しいサイトや本がございましたらご教授ください。(「SQL2005Express」でググってもあまりいいサイトがみつからなかったので) 当方最近Accessを使い始めた素人で恐縮ですが、「SQL」自体、Accessにくっついている簡単なプログラム程度の理解しかないです(汗) すいませんがお時間のある時にご教授ください。 よろしくお願いいたします。

すると、全ての回答が全文表示されます。

関連するQ&A