- 締切済み
datファイルとidxファイルで
お世話になってます。 VB.NET2005 + mdb(2000形式) で作りこんでいるのですが、データ量が多いためか単純なSQL文でもレスポンスが遅いのです。 発行するSQL文自体はシンプルなものばかりなのでmdbではなくdatファイルとidxファイルで自前のDBを作り高速化を図ろうと考えています。 datファイルとidxファイルでやり取りをするサンプルや勉強できるサイトなど、ご存知でしたら紹介して頂けませんでしょうか。
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- nackfive
- ベストアンサー率32% (21/64)
GroupByでそれだけの大量なデータであれば 抽出件数にかかわらずグループさせるだけで 相当掛かると思います。 それを ローカルで走らせるとなると 相当なスペックのマシンでも難しいのではないでしょうか? 詳細がわからないので 断定は出来ませんが 自作で出来る代物では無いと思います。 データの持たせ方、構造から 再考の余地があるのではと 思います。
- noro6677
- ベストアンサー率21% (34/158)
アクセスを使うのをやめる。 ハッキリ言ってアクセスはリレーショナルデータベースの中では ダメな分類。 最低でもMySQLかPostgreSQL。 (MySQLは動作が速く、PostgreSQLはSQLの標準規格に使いつくり) 金あるならオラクル。
お礼
回答ありがとうございます。 私も正直なところ、Accessに限界を感じてきており他DBへの模索を始めているところです。 ただ、ソフト+データでの配布を前提として考えているので他PCにDBソフトのインストール作業が発生しない形式を探していたりします。 mdbはうってつけだったのですが、いろいろあるのでどうにもこうにも。 そこでidxファイルとdatファイルを思いついた訳です。
- bardfish
- ベストアンサー率28% (5029/17766)
>自前のDBを作り高速化を図ろうと考えています。 それは得策ではありません。 自前でデータベースエンジンを作ったとしても満足行くとは限りません。 mdb(Microsoft Access Database)で単純なSQLでレスポンスが遅い場合、インデックスの張り方を見直すことで大幅な改善が見込めます。 WHEREで指定されている項目にインデックスはありますか? SELECTで抽出される件数は妥当ですか?
お礼
早速の回答ありがとうございます。 INDEXに関してはWHERE句の項目指定の並びに注意しながら最小構成で済むよう張ってあり、SELECTで抽出される件数については全件(WHERE指定なし)もしくは1件(GroupByしていますが)です。 実は当初、ひとつのmdbで作りこんでいたのですが、mdb自体が10G近くに達したためTABLEごとに物理ファイルを分け、全てをリンクさせたひとつのmdbから読み取り専用でアクセスする形にしています。 注意するべき点が他にもありましたらご指摘下さると嬉しいです。
お礼
あれ? お礼のつもりが補足に入ってしまいました。
補足
回答ありがとうございます。 TABLE構成を見直して1TABLE最大500MB(1tableを1mdbにしてリンクさせてます)にして、多くともGropeByは500MBのmdbを対象にするようにさせてあります。 それでも、やはり無謀な感じはしていますが。 自作に関しては「もしかしたら・・・」という(甘い)考えから来ているのでやれるだけの事はやってみようと思った次第です。 ただ、数Gのデータを扱うフリーソフトでレスポンスが良いものがあって驚き、データの持ち方をみてみたらそれはidxファイルとdatファイルだったのです。 そのソフトはMicroSoft製品で作ったものではなさそうな感じでしたが、どういう仕組みになっているのか分からず、漠然とidxとdatをソフトに組み込んだ何かのDBエンジンで検索しているのかな?と思って質問してみました。