大量データの高速な抽出方法とは?

このQ&Aのポイント
  • 大量のデータを高速に抽出する方法について、一般的なDB構造上の工夫や別のData Baseの利用方法について説明します。
  • データの抽出スピードを最適化するためには、DBの構造やインデックスの最適化が重要です。
  • また、データの分割や冗長化の削減などの方法も効果的です。
回答を見る
  • ベストアンサー

大量のレコードの中からデータ抽出する際にその抽出スピードを高速化させる方法は?

2004年9月8日こんにちは。 W2K/Access2Kを使用しています。 現在数百程度のレコード数をもつDBで、 検索・抽出作業(データ型が“メモ型”フィールドの中からのデータ抽出が主)を頻繁に行っています。 その抽出スピードは、今の所は気にならない程度ですが、将来そのデータ・レコード数が数万から数十万まで拡大した時のスピードの劣化が心配です。 そこで質問ですが、 1. スピードの劣化を最小限に留めるための一般的なDB構造上の工夫。 2. データのテーブルを独立Data Base“dbB”として、元々のData Base“dbA”と切り離し、dbBをdbAの参照用DBとしてのみ使う、という方法を聞きました。 この方法について、上記の目的(抽出スピードを上げる)にはどの程度効果的でしょうか?  できればその具体的な方法を教えて頂けますと喜びます。以上宜しくお願いします。

  • jsota
  • お礼率23% (11/47)

質問者が選んだベストアンサー

  • ベストアンサー
  • mld_sakura
  • ベストアンサー率20% (264/1282)
回答No.1

おっしゃるとおり、DBを分けてインデックスを貼る程度しかないと思いますが、数万から数十万にAccessがパフォーマンスを出せるとは思いません。 一般的にDBを見直す必要があるでしょう。 (例えば、OracleやMySQL、PostgreSQLなど)

関連するQ&A

  • アクセスでのデータの引き抜き(抽出)方法について

    アクセスのデータ抽出についてご質問が ございます。 100件あるデータの中から 抽出条件が異なるデータを レコードごとに3件抽出したいのですが 困ってます。 例えば、100件のデータの 1フィールド目の数値が 1234567890 7891234567 5678901234 となる値を 抽出条件に割り当て 100件中3件ほど、レコードごとに 抽出出来る 方法はないでしょうか? お手数ですがアドバイスお待ちして おります。

  • テーブルからデータを抽出する場合のスピード

    お世話になっております。 データ抽出のスピードについて質問があります。 例えば3つのページを作るとします。それぞれ、IDで分けるとして、一つがaaa二つ目がbbb三つ目がcccとします。それぞれのデータをMySQLより抽出しようと思ってます。その際のテーブルのフィールドはどれも同じです。 一つの方法として、一つテーブルを作成し、そこに全てのデータを入れて、それぞれWHERE id = aaaなどとしてデータを抽出する方法。 二つ目は、それぞれIDごとにテーブルを作成し、それぞれのテーブルにそれぞれのデータを入れて抽出する方法。 どちらが負荷、速度共にいいのでしょうか。 私が思うに、一つ目の方法の場合、データが増えてきたときに、WHERE id = aaaなどとして抽出するのに時間がかかってしまうように思います。 ちょっと分かりにくい説明かと思いますが、どなたか宜しくお願いします。

    • ベストアンサー
    • MySQL
  • 【Access2000】レコードの抽出方法

     Access2000を使用してデータベースを作成していますが、抽出条件でつまずいています。  具体的には、  【1】選択クエリーAを基に作成したフォームA(単票形式でレコードを1件ずつ表示)があります。  【2】フォームAの中に単票形式でレポートを出力するマクロボタンが有。  【3】現在はマクロボタンを押すとパラメータで「データNo.?」と入力してもらう形になってレコードを1件抽出する形になっています。    ※画面上に表示されている「データNo.」フィールドの数値を入力してもらう形です。  質問についてですが、今のところはパラメータを入力してもらいレコードを抽出→レポートを出力していますが、パラメータを使わず、現在、フォーム上に表示されているレコード(表示されている1件)を抽出する方法はないかと壁にぶち当たっています。  言い換えれば、レポートを出力する際の元になるクエリの抽出条件で「現在、表示されているレコード」をどのように記述すればいいか、もし御存知の方がいらっしゃいましたら御教示お願いいたします。

  • ファイルメーカファイルのレコードの抽出の方法

    ファイルメーカファイルのレコード数が1400になり動作が遅くなったので、そのうちの200のレコードを抽出して新しいファイルメーカファイルとして使いたいのですが、一つ一つやると(1400のレコードから一つ一つ削除する方法しか思いつかないのですが…)膨大な時間がかかるのですが、なにか良い方法はありますか?

  • アクセスで大量のデータを扱う際の注意は?

    アクセスである機器での計測データの管理、集計などの作業を行いたいと考えています。 計測データのレコード数が多いので、それらを効率良く管理するためのノウハウを知りたいと思い質問させて頂きました。 実際にレコード数がどの程度かというと、計測間隔が30秒に1回、計測機器が最大90点まで接続可能であることから、 一日最大259,200レコード、さらに時間と機器名称のデータが各レコードに追加されます。(各計測値は小数点以下第2位までの小数) これを1年積み重ねると94,608,000レコードという膨大な数量になってしまいます。 さらにこれを何年、というかたちで積み重ねてゆくことを考えて、これらの大量のデータを効率よく管理、または集計に利用するために 必要な知識、テーブルの作り方やファイル管理の方法などをご教授頂けたらと思います。 拙い知識の中で私が現在検討している内容としては、 (1)1年半前までのデータはテーブルに残しておきたい (直近データの処理レスポンスを重視したい/前年同月での比較等を行いたいため) (2)1年半以上前のデータはどこか別の所へバックアップし、必要な時に読み込んでくる様にしたい (1年半以上前のデータは集計に利用する頻度が稀であるため) (3)アクセスで行う集計はごく簡単なもの (ある期間を指定したらそのデータを抽出し、グループ毎に和算をして、それをグラフ化する。 一度の集計で利用するのは、最大でも全体の中の1,000レコード程。多くの場合は120レコード程しか使用しない) (4)基本的にアクセスで行う集計にはレスポンスの速さが要求される。(特に直近データ) 基本的にデータは大量なのですが処理自体はとても簡単なものなのです。 大量のデータを保存している影響を処理スピードに与えないようなシステムを作るにはどんな所に注意をしたらよろしいのでしょうか? よろしくお願いいたします。

  • データの抽出方法

    お世話になっております。 以下のような場合で、いっぺんに抽出できる良い方法があれば教えて頂きたく、よろしくお願いいたします。 会社が運営するWebサイトの会員データ (エクセルで、レコード数は1万弱)の集計。 プレゼントキャンペーンに応募して頂いた会員の個人データで、 各自、個人情報以外に4桁の抽選番号が登録してあります。 プレゼントの当選番号に該当する全ての会員データを抽出したいのですが、 一つの抽選番号に対して何名も該当者がいるため、VLOOKUPが使えず、 当選番号も数十通り程あるので、オートフィルタも時間がかかってしまいます。。。。 宜しくお願いします。

  • 抽出方法

    SQL Server2008を使用しています。 key c1 c2 k ------------ 1 01 01 100 2 01 01 200 3 01 02 120 4 01 02 150 5 01 02 200 上記のようなデータがあるとします。 c1,c2が同じものをまとめて1レコードとして 抽出したいと思っています。 c1,c2が同じものは最大5つまでです。 合計と内訳を下記のようにまとめて 抽出するにはどのようなSQLを記述すればよいでしょうか?    ↓↓↓    c1 c2 k1 k2 k3 k4 k5 k0 --------------------------- 01 01 100 200 0  0 0 300 01 02 120 150 200 0 0 470

  • アクセスのデータ抽出

    現在テーブルA(支店コード、支店名、郵便番号、住所)とテーブルB(支店コード、社員番号、商品Aの売上数、商品Bの売上数・・・※商品名ごとにレコードを持っています。)の2つのテーブルを使っています。 これをクエリで抽出しているのですが、社員一人につきひとつのレコードしか抽出されません。 売上のない支店も全て抽出し、実績報告書として印刷するため、テーブルAとBに結合のプロパティでテーブルAの全てを選んでいるため、これ以外の方法でテーブルBのデータ全てを抽出したいのですが、何か方法はありますか?

  • 複数レコードを横並び1レコードで抽出する方法

    ORACLE10gを使用しています。 似た内容の質問があったので QNo.1828920:検索対象のデータが「複数レコード」を「1レコード」として獲得するSQL も見てみたのですが、実際には他にも抽出条件や抽出項目が多いので、 できればGROUP BYは使いたくないと思い、質問させていただきます。 ・TABLE)イメージ CD|NO|NM 10 | 0 | あ 10 | 1 | い 10 | 2 | う 10 | 3 | え ・前提 画面でCD:10およびNO:0~NO:2と範囲指定します。 ・求める結果 下記のように範囲指定したNO分、NMを横並びに抽出したいです。 10,あ,い,う ・考えた内容 VBを使用しているのでプログラム中で動的に抽出項目、FROM句、WHERE句を 追加しようと考えました。 TABLE.NOは2桁なので最大指定で0~99になる可能性があります。その場合FROM句のTABLE別名が99個に なってしまいますが、書き方として問題ないのか不安です。 何かアドバイスがありましたらお願いします。 ・SQL案 SELECT TABLE0.CD, For I = 0 To 2 TABLE & I.NM AS NM & I, Next K FROM For J = 0 To 2 TABLE TABLE & I, Next K WHERE TABLE0.CD = 10 AND For K = 0 To 2 TABLE & K.NO = K AND Next K

  • AccsessとExcel双方のデータで一致しているものを抽出したいときは?

    はじめまして。よろしくお願いいたします。 Accsessはほとんど無知で、DBの構成などもわからないのですが まずは、質問をさせてください。 補足が必要なときは、随時補足させていただきます。 AccsessのDBに入っているデータが(仮に名前の名簿だとします)が3万件程度、 Excelファイルに同様のデータが1万件程度あります。 入っているデータは同じようなもので、 Excelの1万件は、Accsessの3万件の中に入っているはずですが、 どのデータが重複しているのかがわからないので、 重複しているデータを抽出、もしくは検索したいのです。 数が数だけに、1件1件検索するわけにもいかないので、 一括に近い形で検索できる方法が知りたいです。 どなたか、ご存知の方がいらっしゃいましたら、ぜひ教えてください!

専門家に質問してみよう