• 締切済み

ACCESS VBAでSQL Server使用

ACCESS VBAでSQL Server使用しています。 データ量が多い場合、 リンクテーブルを張ってDocmdでJetデータベースエンジンを使う方法と SQL ServerにADOで接続してT-SQLを使用する方法ではどちらが早いでしょうか?

みんなの回答

  • IDii24
  • ベストアンサー率24% (1597/6506)
回答No.2

簡単な方を選ぶならはじめからリンクでやればいいだけ。早いと聞かれているので早い方法を提示しているだけなので。Datasetに一気にメモリに読み込んでそのままOpenXMLで流し込めば100万件でも数十秒。これが一番早い。けど一番難しい。つまり早い方法というのは難しいので自分にやる気がなければ問題外ですよ。

  • IDii24
  • ベストアンサー率24% (1597/6506)
回答No.1

リンクテーブルの原理を考えればこんなもの使っちゃダメって思います。 当然SQLServer上で処理してください。そしてストアドプロシージャーを多いに使ってください。 つまりコンパイルされたクエリが一番早いに決まっているのです。 またWhere句は必ずインデックスを張った列に指定すること、そしてWhere句の順番も関係ないという最近の考えもあるけど、実は関係あります。コストを計算するのがよい。 また結合はリレーションで外部キーを指定してある方が当然早い。 つまりAccessでは気にせずやってたことがSQLサーバーではいろいろ知識によっていろいろ頭を使えば速さは多いに変わる。 Accessは建売住宅で、SQLサーバーは注文建築なのです。Aceessは建築会社の都合で料金は馬鹿高くなるけどSQLサーバーはこちらの費用に合わせた家が建てられるってことですね。

wcup2002
質問者

補足

ほとんどの処理が全データインポートと大量データ抽出なので インデックスやWHERE文が関係ない場合が多いです。 もちろん検索系の処理でインデックスやWHERE文を使う場合は T-SQLを使うつもりです。 インポートはDocmdでいいかな?と思っていますが。。。

関連するQ&A