こんばんわ。
いつも皆様のアドバイスを頂いて助かっており、大変お世話になっております。
ご相談なのですが
会社でデータとデータの突合(一致したデータや不一致データの抽出してテーブルを作りxlsを出力等)をACCESSを使用してする事がよくあります。
しかし、その突合のデータが2GB同士だったりので、時間もかかってしまい、MS-ACCESSは2GBで壊れるので苦戦する事が
多いです。
LANにてサーバーにテーブルを置いてのリンクも都合上、今はできないので端末の中でのローカルでやっているのですが、ACCESSよりもっと時間のかからない効率的なソフトはありませんでしょうか?
今度、MySQLで試そうと思っているのですが・・・
SQL Serverは使わない方向でご教授頂けませんでしょうか?
何卒、宜しくお願い致します。
No.4ベストアンサー
- 回答日時:
#1、#2、#3です。
>選択クエリでするよりもSQL構文を使った方が処理は早いのでしょうか??
そんなことはないでしょう。ただ処理時間を計るのに使い慣れたデルファイを利用したため,SQL文にせざるを得ませんでした。それも単にクエリーを作り、動作を確認してから、クエリービューをSQLビューに替えただけです。
ともかく、他言語やVB(A)で、クエリーを利用する場合はSQL文をいじることが多いと思います。
これは蛇足ですが「教えてgoo!」では、テキストしか表示できないし。
ご回答ありがとうございます!
SQL構文は知っていますがあまり使っていなかったのが現状です。
再度、試してみます♪
幾度となく丁寧にご教授頂き、ありがとうございました☆
また機会がありましたらお教え頂きたいと存じます。
感謝しております。
No.3
- 回答日時:
#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構文を使った方が処理は早いのでしょうか??
その辺りだけ最後のご教授と頂ければと存じます。
何卒、宜しくお願い致します。
No.2
- 回答日時:
#1です。
補足有り難うございました。しかし詳細が把握できないこともあり、以下はあくまでも参考です。テーブルを度々作成しているようですが、これだとディスクへの書き出しが発生するので、当然時間もかかりますし、全体ファイルのサイズも大きくなります。クエリとかビューで処理できないのでしょうか?
この回答への補足
こちらこそご回答ありがとうございます。
途中の状態を後ほど確認する為にテキストやテーブルに保存しております。
用途に応じてクエリにてエクスポート等しております。
しかし、時間がかかるのが問題です。
やはり重い分だけ時間がかかってしまうのは仕方のない事でしょうか?
MySQLやoracleではもう少し早いのかとも考えたのですが。。。
ご存知ならご教授下さいませ。
No.1
- 回答日時:
・処理時間は全体のファイルサイズより、レコード数、フィールドの大きさによるところが大きいと考えます。
この辺りはどのようなものでしょうか?・処理したい内容(一部でよいがもう少し具体的に)と、そのためのSQL文(違う方法であればその手続き)を示さないでしょうか?
この回答への補足
ご回答有難う御座います。
レコード数はいずれも60万でフィールドは30~55程ございます。
処理したい内容は様々にあるのですが、多いのは2テーブルの一致データ(クエリでリレーションシップ)を抽出して2テーブル分のフィールドをテーブル作成クエリで作ります。
その作成したテーブルに不一致分のデータ(不一致クエリ)を追加して1つのテーブルを作成します。
今度はまた同じ位の要領のテーブルを突合させて同じ様にフィールドを全て出してテキストなどでエクスポートする形です。
お分かり頂けましたでしょうか?
宜しくお願い致します。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(データベース) pythonでsqlight勉強中、クエリー結果の利用法教えて下さい 1 2022/04/28 20:38
- その他(プログラミング・Web制作) Accessの代わりのノンプログラムデータベース作成 4 2022/10/21 09:26
- Y!mobile(ワイモバイル) Ymobile!データ増量オプション(550円)1年無料経過後 解約・契約繰り返して使えますか? 5 2023/05/11 09:11
- その他(データベース) 20万行あるデータを動かしたい 2 2023/06/13 15:21
- Excel(エクセル) CSVファイルがカンマ区切りにならない。対処法を教えていただきたいです。 仕事でSMS一斉送信ができ 2 2022/07/01 21:24
- Excel(エクセル) Excelでデータを抽出するに良い方法 9 2023/02/06 12:42
- Access(アクセス) Access 登録ボタンからサブフォームの更新 1 2022/07/22 10:23
- その他(データベース) 更新クエリをリンクデータベーステーブルに実行し実行時エラー3362固有インデックスに重複する値が含ま 1 2022/09/21 11:44
- Access(アクセス) Accessのリンクテーブルのパスを相対パスにする方法について教えて頂きたいです 1 2023/02/08 13:29
- Excel(エクセル) Excel同士のデータの突合 3 2023/08/07 16:34
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
SQLServerでtime型への変換
-
Access 2000 サブクエリとJOIN
-
オークションでパソコンを売る場合
-
1、Rstudioで回帰直線を求める...
-
差し込み後、元データを変更し...
-
for whichの使い方
-
フィルターかけた後、重複を除...
-
外部参照してるキーを主キーに...
-
pythonで同じコード内で複数の...
-
SQL
-
SELECT 文 GROUP での1件目を...
-
一つ前のレコードの値と減算し...
-
Access:クエリーにて集計後に...
-
カーソル0件の時にエラーを発生...
-
2つのselect文をunion all で...
-
access2003 クエリSQL文に...
-
SQLによる"あいうえお"順でソー...
-
knowledge on, about, of
-
EXISTSを使ったDELETE文
-
大文字/小文字の区別しないで検...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
BULKINSERTのWITHオプションに...
-
片方のテーブルに無いデータを...
-
日付型項目のNULLについて(Pos...
-
SQLServerでtime型への変換
-
Access 2000 サブクエリとJOIN
-
オークションでパソコンを売る場合
-
差分のSQL
-
指定値を否定した条件で、NULL...
-
SQL文について
-
データ突合のよい方法を教えて...
-
プロシージャがみつかりません...
-
Excelvba2013で、ユーザーフォ...
-
【SQL】指定期間の合計、MAX...
-
外部結合+合計を出したい
-
ユーザーID入力について
-
マクロの同時実行
-
MS SQL Serverでのクエリ文
-
カラム名がcurrent_dateのテー...
-
sql express内部結合して重複行...
-
バッチでのバックアップに関して
おすすめ情報