電子書籍の厳選無料作品が豊富!

こんばんわ。
いつも皆様のアドバイスを頂いて助かっており、大変お世話になっております。

ご相談なのですが
会社でデータとデータの突合(一致したデータや不一致データの抽出してテーブルを作りxlsを出力等)をACCESSを使用してする事がよくあります。

しかし、その突合のデータが2GB同士だったりので、時間もかかってしまい、MS-ACCESSは2GBで壊れるので苦戦する事が
多いです。

LANにてサーバーにテーブルを置いてのリンクも都合上、今はできないので端末の中でのローカルでやっているのですが、ACCESSよりもっと時間のかからない効率的なソフトはありませんでしょうか?

今度、MySQLで試そうと思っているのですが・・・

SQL Serverは使わない方向でご教授頂けませんでしょうか?

何卒、宜しくお願い致します。

A 回答 (4件)

#1、#2、#3です。


>選択クエリでするよりもSQL構文を使った方が処理は早いのでしょうか??
そんなことはないでしょう。ただ処理時間を計るのに使い慣れたデルファイを利用したため,SQL文にせざるを得ませんでした。それも単にクエリーを作り、動作を確認してから、クエリービューをSQLビューに替えただけです。
ともかく、他言語やVB(A)で、クエリーを利用する場合はSQL文をいじることが多いと思います。
これは蛇足ですが「教えてgoo!」では、テキストしか表示できないし。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます!

SQL構文は知っていますがあまり使っていなかったのが現状です。

再度、試してみます♪
幾度となく丁寧にご教授頂き、ありがとうございました☆

また機会がありましたらお教え頂きたいと存じます。
感謝しております。

お礼日時:2007/01/14 17:34

#1、#2です



>MySQLやoracleではもう少し早いのかとも考えたのですが
使用経験がないので推測するだけですが、それほど変わらないと考えています。なぜならば単独での並べ替えや検索はアルゴリスムにより決まるわけですが、この分野はほとんど研究し尽くされ、データベース・ベンダによりそれほど差がつくことはあり得ないからです。
結局oracle辺りが何に注力しているかと云えば、トラブル発生時のロールバック等の対策をどの程度完璧にするか、あるいはアクセス数が膨大になってもいかにパフォーマンスを落とさないかなどでしょう。

上記はさておいて、途中にテーブルを作成するとどの程度よけいにかかるか10万件で試験してみました。テーブルを作成しない場合
SQL文は
SELECT test.SN, test.ID
FROM test INNER JOIN test2 ON test.ID = test2.ID
ORDER BY test.ID;
オープンしてレコードの最後に移動するまで1891ミリ秒(測定ごとに多少変わる)

レコードを全て削除後テーブルにインサートしレコードの最後に移動
SQL文は

INSERT INTO test3 ( SN, ID )
SELECT test.SN, test.ID
FROM test INNER JOIN test2 ON test.ID = test2.ID
ORDER BY test.ID;
3188ミリ秒。この差をメンテナンスその他で必要なコストと見なすかどうかでしょうが、運用時とチェック時で替える手もありそうです。
環境:CeleronD 3.06GH + 1GB RAM + XP Home SP2 + DP6 UP2
ご参考までに

この回答への補足

ご回答有難う御座います☆

MySQLやoracleではそう変わらないのですか・・・

SQL文の記述有難う御座います!
とても分かりやすく参考になりました♪

初歩的な質問なのですが選択クエリでするよりもSQL構文を使った方が処理は早いのでしょうか??

その辺りだけ最後のご教授と頂ければと存じます。
何卒、宜しくお願い致します。

補足日時:2007/01/14 16:00
    • good
    • 0

#1です。

補足有り難うございました。しかし詳細が把握できないこともあり、以下はあくまでも参考です。

テーブルを度々作成しているようですが、これだとディスクへの書き出しが発生するので、当然時間もかかりますし、全体ファイルのサイズも大きくなります。クエリとかビューで処理できないのでしょうか?

この回答への補足

こちらこそご回答ありがとうございます。

途中の状態を後ほど確認する為にテキストやテーブルに保存しております。
用途に応じてクエリにてエクスポート等しております。
しかし、時間がかかるのが問題です。

やはり重い分だけ時間がかかってしまうのは仕方のない事でしょうか?

MySQLやoracleではもう少し早いのかとも考えたのですが。。。

ご存知ならご教授下さいませ。

補足日時:2007/01/13 19:46
    • good
    • 0

・処理時間は全体のファイルサイズより、レコード数、フィールドの大きさによるところが大きいと考えます。

この辺りはどのようなものでしょうか?

・処理したい内容(一部でよいがもう少し具体的に)と、そのためのSQL文(違う方法であればその手続き)を示さないでしょうか?

この回答への補足

ご回答有難う御座います。

レコード数はいずれも60万でフィールドは30~55程ございます。

処理したい内容は様々にあるのですが、多いのは2テーブルの一致データ(クエリでリレーションシップ)を抽出して2テーブル分のフィールドをテーブル作成クエリで作ります。
その作成したテーブルに不一致分のデータ(不一致クエリ)を追加して1つのテーブルを作成します。

今度はまた同じ位の要領のテーブルを突合させて同じ様にフィールドを全て出してテキストなどでエクスポートする形です。

お分かり頂けましたでしょうか?
宜しくお願い致します。

補足日時:2007/01/13 16:40
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

関連するカテゴリからQ&Aを探す