- 締切済み
クロス集計のスピードアップ
Accessで数十万件のデータのクロス集計をおこなおうと思っているのですが1日程度時間がかかってしまいます。以下のプロセスでスピードアップが図れそうな事項がございましたらご教授ください。 -------------------------------------------- (1)テーブル「A」とテーブル「B」(両方とも数十万件)を「A」のIDをキーとして「B」のIDと紐付けし、テーブル「A」の全項目とテーブル「B」のある1項目をクエリを用いて出力します。 (2)(1)のクエリをテーブルに変換する。(←ここで非常に時間がかかってしまいます。) (3)(2)についてクロス集計を行う。 -------------------------------------------- (2)でテーブルに変換せずにクロス集計を行っても非常に時間がかかってしまいます。素人質問で大変恐縮ですが何とぞご教授ください。 よろしくお願いいたします。
- bird66
- お礼率83% (47/56)
- オフィス系ソフト
- 回答数2
- ありがとう数1
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- imogasi
- ベストアンサー率27% (4737/17068)
人類は、使おうとするときに、便利なように、データベースというものを考え作り上げてきました。しかしそのため仕掛けを作る時間、用意する時間も運用する時間もかかります。パソコン他のコンピュタの処理能力〔入出力を含めて)が驚異的に進歩し、それらのデメリットを乗り越えてきました。 パソコンができる前は、大型機のシステムなどで、磁気テープベースの処理が多く、会社ではその当時も何十万件のレコードがあり、集計(統計)表という名のクロス集計表が作られていました。 その際はソート法が多かったと思います。ソート法とは、例えば店別・商品別統計なら、店別にソートして、商品別のポケット(集計結果を持つための変数)を用意し、1レコードを読んでは、該当ポケットに足しこんで行ききました。別の店のレコードが現れると、吐き出し(印刷)をしてました。 これだと質問の例で言うと、必要時間は A.50万件のソート時間 B.ソート後の50万件のレコードの読み込み時間 で済みます。(演算時間等は微々たるものと思う)。 40万件のソートはACCESSではどれほどかかるでしょうか。 こういう原初に返った方法を私なら試してみたい。 しかし質問者はプログラムができないようなので、誰か相談する方でもいれば一度、相談してみてください。 集計という単目的のためには、ストレートな適当な処理ロジックがあるということを言いたいのです。(データベースシステムは単目的ではないのは判りますね)
- pbforce
- ベストアンサー率22% (379/1719)
お望みの回答ではないと理解していますが回答させていただきます。 素直にアクセスではなくデータベースを使った方がいいと思います。 SQL2005Expressなどいかがでしょうか?充分改善されると思います。
補足
ご回答大変ありがとうございました。 今回はAccessでなんとか乗り切ることにしました。 今後の為に「SQL2005Express」について詳しいサイトや本がございましたらご教授ください。(「SQL2005Express」でググってもあまりいいサイトがみつからなかったので) 当方最近Accessを使い始めた素人で恐縮ですが、「SQL」自体、Accessにくっついている簡単なプログラム程度の理解しかないです(汗) すいませんがお時間のある時にご教授ください。 よろしくお願いいたします。
関連するQ&A
- Access2003 クロス集計で集計値を四捨五入
☆以下のようなテーブルで、フィールド[ID]~[点数]があり、文字および数字のデータが混在しています。 ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ =========================================== (テーブル(1)) [ID] [クラス] [科目] [点数] 1 A 英語 11 2 B 英語 22 3 C 数学 33 4 A 国語 44 5 B 数学 55 6 C 国語 66 7 B 国語 77 8 C 英語 88 9 A 数学 99 =========================================== ☆上記のテーブルをクロス集計クエリで集計する ・フィールド[クラス]を行見出しに設定、 ・フィールド[科目]を列見出しに設定、 ・フィールド[点数]を集計する項目にし主計方法を「合計」に設定する。 =========================================== [クロス集計結果] 合計 英語 国語 数学 A 154 11 44 99 B 154 22 88 55 C 187 99 77 33 =========================================== [課題] クロス集計クエリで、集計値を四捨五入する (1) フィールド[クラス]を行見出しに設定、 フィールド[科目]を列見出しに設定、 フィールド[点数]を集計する項目にし主計方法を「合計」に設定する。 (2) クロス集計の値を、下1桁で四捨五入した値を表示する。 (3) 「合計」の値を、下1桁で四捨五入した値を表示する。 ※ クロス集計した合計値を、四捨五入した値を表示する ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ =========================================== [クロス集計結果] 合計 英語 国語 数学 A 150 10 40 100 B 150 20 80 60 C 190 90 70 30 =========================================== ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ 上記のように、クロス集計クエリでの集計値を四捨五入して 表示させたいのですが、どうすればよろしいでしょうか? また、クエリだけでは出来ない場合は、SQLで教えていただければ 幸いでございます。 お手数お掛けしますが、何とぞ宜しくお願い致します。
- ベストアンサー
- その他MS Office製品
- Access2003 クロス集計クエリでの合計
☆以下のようなテーブルで、フィールド[ID]~[C]があり、文字および数字のデータが混在しています。 ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ =========================================== (テーブル(1)) [ID] [A] [B] [C] 1 111 英語 10 2 222 英語 20 3 333 数学 30 4 111 国語 40 5 222 数学 50 6 333 国語 60 7 222 国語 70 8 333 英語 80 9 111 数学 90 =========================================== [課題] クロス集計クエリを作成する (1) フィールド[A]を行見出しに設定、 フィールド[B]を列見出しに設定、 フィールド[C]を集計する項目に設定する。 (2) フィールド[C]の値を列ごとに平均を計算し、 行ごとに合計を計算する。 ※ 列と行で、それぞれ集計した値を表示する ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ =========================================== [クロス集計結果] 合計 英語 国語 数学 111 140 10 40 90 222 140 20 70 50 333 170 80 60 30 --------------- 平均 150 36 56 56 =========================================== ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ 上記のようなクロス集計クエリの結果を表示させたいのですが、 どうすればよろしいでしょうか? また、クエリだけでは出来ない場合は、SQLで教えていただければ幸いでございます。 お手数お掛けしますが、何とぞ宜しくお願い致します。
- ベストアンサー
- その他MS Office製品
- ACCESSのクロス集計クエリについて
ACCESS2000のクロス集計クエリで超初歩的な質問なのですが、、 こんなテーブルがあります。 メーカー 商品名 A社 テレビ B社 テレビ A社 ラジオ A社 テレビ これをACCESSのクロス集計クエリでこんな感じにしたいです。 メーカー 商品名 集計 A社 テレビ 2 A社 ラジオ 1 B社 テレビ 1 エクセルでは、行見出しに「メーカー」と「商品名」を入れて値に「メーカー」か「商品名」どちらかを入れれば希望通りの結果になるのですが、ACCESSのクロス集計では、列見出しに必ず入れないとエラーが出るようです。入れなくても良い方法かもっといい方法がありましたらご教授ください。
- ベストアンサー
- オフィス系ソフト
- クロス集計クエリの結果を一時テーブルに保存する
タイトルのような操作を求め下記のようなやり方を発見したのですが、なぜこのような2種類のクエリを作成しなければならないのかがわかりません。 2つのクエリの意味・役割をご存知の方がいらっしゃったら教えて下さい。 宜しくお願いします。 Q あるテーブルからクロス集計クエリを作成し、そのままそのクエリをテーブル作成クエリにしたところ、クロス集計が解除されてしまいます。クロス集計の結果をテーブルに保存することはできないのでしょうか A クロス集計クエリを作成して、そのままそのクエリをテーブル作成クエリにすることはできないようです。 その場合は、クエリを2つ作成し2段階でテーブルを作成するようにします。 1つめのクエリではテーブルなどを基にしてクロス集計を行います。 2つめのクエリでは1つめのクエリを「テーブルの表示」一覧から「クエリ」タブに切り替えて選択してテーブル作成クエリとします。 参照:http://www.nbcom.co.jp/PC-Support/FAQ/acc/ht/acc092004ht001.shtml
- ベストアンサー
- その他MS Office製品
- クロス集計 エクセル
アクセスにはクエリにクロス集計がありますが エクセルにもクロス集計と言う機能があるのでしょうか? エクセル2010を持っています。 ピボットテーブルの事を クロス集計と呼ぶのでしょうか?
- ベストアンサー
- Excel(エクセル)
- クロス集計の日付表示について
はじめまして。 クロス集計で悩んでいます。 日別の売上データをクロス集計で表示する際 月別の合計として列軸に表示したいのですが・・・。 例:テーブル:売上一覧 XXX商事 2010/11/5 A商品 2個 XXX商事 2010/11/8 A商品 2個 BBB商会 2010/11/8 B商品 3個 XXX商事 2010/12/5 A商品 2個 のようなでーたーを クエリ:月別売上クロス 2010/11月 2010/12月 ______________________________________________________ XXX商事 A商品 4個 2個 BBB商会 B商品 3個 のように表示したいのです。 この場合テーブルの書式プロパティで "YY/MM"とすればテーブルでは10/11と表示されますが クロス集計にすると、日別で表示されます。(11/5.11/8) どうしたらいいでしょうか
- 締切済み
- オフィス系ソフト
- クロス集計の効率的なやり方について
データの項目が22ありまして、これらの項目間のクロス集計を行います。 エクセルを使い、もっとも効率的なやり方があれば教えてください。 やはり一つずつ(AとB、AとC、AとDというように)やらねばならないのでしょうか。 また、エクセルに限らず、他に良いソフトがあれば、それもお教えください。
- ベストアンサー
- オフィス系ソフト
- クロス集計の値の表示
勉強不足のため悩んでいます。 accessにて、下記のようなテーブルとクロス集計を行ったクエリがあるとします。 T_評価 ID 評価 1 優 2 良 3 可 4 不可 Q_クロス集計 氏名 最低科目 科目1 科目2 科目3 AAA 3 2 1 3 BBB 4 3 4 3 CCC 2 1 2 2 このQ_クロス集計クエリをレポートにて出力させたいのですが、 T_評価テーブルを用いて、 氏名 最低科目 科目1 科目2 科目3 AAA 可 良 優 可 BBB 不可 可 不可 可 CCC 良 優 良 良 このようにクロス集計の値(ID)を置き換えたいのですが、 どのようにすればよいのでしょうか?
- ベストアンサー
- その他(データベース)
お礼
ご回答ありがとうございました。参考にさせていただきます。