accessからsqlserverへの移行について!
現在accessでシステム運用しています。
処理に時間がかかるのでDBのみsqlserverへの移行を検討しています。
時間がかかる原因は計算項目が多く計算の為に必要な定義項目と参照項目で計算項目を含めると約300項目となります。
この為、クエリーをNo.1とNo.2の2個のクエリーに分けて対処しています。
クエリーNo.2はNo.1の式の値を使用し更に式で計算しています。
クエリーで定義している計算式も条件が複雑なものもありさらに計算結果⇒計算結果⇒・・・・となっています。
この様な内容なので入力画面はレスポンスが遅く印刷は5~10分位かかるものがあります。
とりあえず印刷処理を早くしたいと思い一旦ワークテーブルに必要項目を出力する等をやって見ましたがやはり抽出に時間がかかりあまり改善しません。
データ件数は約3万件なのでデータ件数は問題ないと思っています。
accessの処理はそのままでDBをsqlserverからODBCでリンクしようと思います。
DBをsqlserverに移行することで処理速度の改善はどの程度見込めるのでしょうか。
計算項目数が多いのであまり見込めないのではと思っています。
accessからsqlserverへの移行された方でどの位改善されたのか教えて下さい。
現在の運用環境はサーバは使用せずファイル共有で4台のPCで運用しています。OSはWinXPです。
今回も専用サーバは使用せず現在のWinXPのPCにSQLServer2005無料を使用しようと思っています。
又、accessの処理で他に早くする方法がありましたら教えて下さい。
よろしくお願いします。
No.1ベストアンサー
- 回答日時:
accessだから遅く、sqlserverだから速いという
単純なものではありません。やはり、エンジンを
置くPCの性能がカギで、これが遅いのでは期待は
できないとしたものです。聞けば同じマシンで代替
するとのことなので、あまり期待しない方がよい
と思います。accessのイヤな所は挿入/削除を
繰り返すと、デッドスペースが増加するだけでなく、
インデックスも最適な状態からかけ離れていくこと
です。従って、度々最適化する必要があります。
DBの設計方針が分からないので何とも言えませんが、
抽出条件に使う可能性が高い項目にはインデックスを
置くとか、マスタを持つコード項目はリレーションを
張ることで速度が改善されます。特に昔の遅いDBでは
リレーションの設計は最大のポイントでした。
SQLの組み方が拙いため遅い可能性もありますが、
accessやsqlserverはスマートな方で、影響は少ない
でしょう。例えば、a=1 or a=2 より a in (1,2)の
方がaの参照が1回なので、若干高速です。(気休め程度)
尚、sqlserverには一時テーブルと言うのがあり、
対象レコードを減らしておいて処理することができます。
これは便利な機能で、大いに助かるところです。
尚、ODBC接続したテーブルにDLookupなどDxxx関数を
使うと、極端に遅くなることがあります。これらの
関数を多用している場合は注意が必要です。
この回答への補足
回答ありがとうございます。
現在のマシン3年前に購入したPentium4の2.40GHzメモリは1Gで遅いマシンでは無いと思っています。
ファイル共有している他のマシンも同等です。
それから仰るとおりにaccessを最適化すると早くはなります。
sqlserverにすればその必要が無いので移行の検討材料の1つに上げています。
又、インデックスは必要と思われる項目には設定し、リレーションも張っています。
回答頂いた内容からして専用サーバを検討した方がいいのでしょうね。
専用サーバも高価なものは買えないので性能的には現在のPCの性能と同等程度となります。
専用サーバを設置しサーバOSにするとにより処理速度はかなり速くなるのでしょうか。
よろしくお願いします。
No.3
- 回答日時:
ディスクアクセスと比べれば計算は非常に高速です。
計算が多いから遅いということは、あまり考えられません。
3万件のテーブルだけを使用しているのですか?
複雑な計算をしてるなら当然複数のテーブルを使用してますよね。
それら複数のテーブルをサーバーに置いてリンクテーブルにし、
従来通りのクエリーをそのまま使った場合は、確実に遅くなります。
高速化にはそれなりのテクニックが必要です。
方法はケースバイケースですので、実際のクエリーを見てみないと分かりません。
この回答への補足
回答ありがとうございます。
クエリーで使用しているテーブルはマスタやデータ含め4テーブルをリンクしています。
>従来通りのクエリーをそのまま使った場合は、確実に遅くなります。
これはサーバを立ててsqlserverに移行した時のことでしょうか。
VIEWを使用すれば遅くはならないでしょうか。
>高速化にはそれなりのテクニックが必要です。
何か参考になるサイトはご存知無いでしょうか。・
よろしくお願いします。
No.2
- 回答日時:
>やはり抽出に時間がかかりあまり改善しません
とのことですので、計算式なしで[select * from ...等]にしてみて流してみてください。
ここが遅いのであれば、索引等をつければ早くなる可能性はあります。
また、上記の条件でどれだけデータがヒットするのかが問題となります。
3万件全て取ってきてから計算する作りだと厳しいです。
Accessは一旦、データをローカルに持ってきてから計算するので、ネットワークの速度も関係してきます。
この回答への補足
回答ありがとうございます。
計算式無しで早くなった時、必要な計算値はどのようにして取得しておられるのでしょうか。
計算式⇒計算式⇒・・・等で求めている値は40個ぐらいあります。
インデックスは必要と思われる項目には設定し、リレーションも張っています。
対応されておられる方法がありましたら教えて下さい。
よろしくお願いします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- 情報処理技術者・Microsoft認定資格 応用情報処理技術者試験のシステム利用率の計算について 2 2022/03/28 07:43
- その他(データベース) pythonでsqlight勉強中、クエリー結果の利用法教えて下さい 1 2022/04/28 20:38
- Access(アクセス) Access DAOのExecuteメソッドのオプション(RecordsetOptionEnum)に 1 2022/09/19 07:34
- その他(自然科学) 論文のまとめに関して(小論文)添削お願いします。 6 2023/07/16 14:24
- 会社・職場 健診等の健康管理に厳しい会社で働いています。 皆様の会社は如何でしょうか?ご意見が聞きたいです。 弊 4 2023/08/22 20:15
- システム CSVファイルのマッピング処理の省力化 1 2022/11/24 00:01
- 数学 移項の計算を教えて欲しいです。 画像の計算式の2行目、90を移行すると-90になると思ったのですが、 1 2023/04/14 20:14
- その他(プログラミング・Web制作) プログラミング 処理速度 1 2022/11/25 11:05
- Java java 飾子を付けること(public static・・・) ・コンソールへの出力処理はmainメ 2 2022/06/16 19:34
- その他(法律) 役所の人間が勝手に間違えて振込、それを知って使って刑事事件とか、不当逮捕そのものでは? 5 2022/05/22 15:13
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
コンピューターで2進法が採用...
-
生年月日から年齢を取得する方法
-
アクセスである時点での年齢を...
-
エクセルで四捨五入ではなく、5...
-
計算結果をCASE WHENで判断した...
-
ファイルメーカーPro7での経過...
-
ファイルメーカーで給与計算
-
「24日の0時」って・・・
-
VBAでエクセルシートを更新...
-
エクセルのチェックボックスを...
-
エクセルで最高値、最低値の日...
-
パソコンで購入したデーターが...
-
差し込み印刷に当日の日付が入...
-
日付の大小の表現
-
回覧板の日付について質問です...
-
日付を昇順で並び替えし、空白...
-
「時間」、「期日」、「日付」...
-
エクセル マクロ 名前を付けて...
-
excelで、セル内に文字が入力さ...
-
エクセルで数字から名前に変...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excel 隣のセルが空白以外の場...
-
コンピューターで2進法が採用...
-
アクセスである時点での年齢を...
-
【ACCESS】未定義関数が発生。...
-
アクセスについて
-
ACCESSでの時間外計算方法
-
計算結果をCASE WHENで判断した...
-
エクセルで四捨五入ではなく、5...
-
ファイルメーカーで学年を表示...
-
ACCESS で深夜計算
-
ファイルメーカープロ8で生年月...
-
エクセルでeのマイナス乗の計算...
-
Accessクエリーにて開始日と終...
-
ファイルメーカーで小数点以下...
-
アクセスのクエリで出生時~小...
-
ファイルメーカーで時間の表示...
-
ストアド cast演算子 char型→in...
-
選択クエリを開けない
-
生年月日から年齢を取得する方法
-
ACCESSで生年月日より年齢を出...
おすすめ情報