
現在、リンクテーブルに対し、以下のクエリを作成しております。
1.Q_在庫:在庫を品番で集計する。
[結果]
品番 在庫
A 100
B 20
2.Q_受注:受注データの残数を集計する。
[結果]
ID 品番 納期 予定数 合計数
1 A 20080625 10 10
2 A 20080626 50 60
3 A 20080627 100 160
3.Q_可否:Q_在庫とQ_受注を品番でリレーションし、在庫行を付加し、
在庫が合計数を上回っていれば"○"を表示する。
[結果]
可否 ID 品番 納期 予定数 合計数 在庫
○ 1 A 20080625 10 10 100
○ 2 A 20080626 50 60 100
× 3 A 20080627 100 160 100
このとき、Q_可否を実行すると、20秒くらいかかってしまい、
パススルークエリのほうがよいのかな?と考えています。
ただ、私以外の人が後から変更などする場合、
長いSQL文はわかりづらいだろうとも考えます。
どちらかを犠牲にするしかないのでしょうか。
もっと良い方法があるのでしょうか。
漠然とした質問で申し訳ありませんが、よろしくお願いします。
No.1ベストアンサー
- 回答日時:
Q、棚卸しの手法。
A、棚卸一時テーブルを一気に作成。
これで、サーバーの関連テーブルとのアクセスは全て終了。
で、関連テーブルは、他のクライアントに開放できます。
で、参照や印刷では棚卸一時テーブルを利用。
Access のリンクテーブルはその都度に全てのデータを取り込んで処理。
そのデータを参照する都度に再び全てのデータを取り込んで処理。
これを二重、三重に仕掛ければ処理が遅くなるのは必定。
最初から3を作成しても1万件でも1、2秒かと思います。
で、表示は時間計測不能かとも・・・。
この回答への補足
回答ありがとうございます。
>Access のリンクテーブルはその都度に全てのデータを取り込んで処理。
>そのデータを参照する都度に再び全てのデータを取り込んで処理。
>これを二重、三重に仕掛ければ処理が遅くなるのは必定。
やはりそうですよね。
他の者に聞いたところ、私よりももっと初心者のため、
後から変更することはないとのことでした。
リンクテーブルをやめ、パススルークエリで一時テーブルに
INSERTする方向でいきたいと思います。
No.2
- 回答日時:
元のDBシステムが何だか分かりませんが、以下のようにすれば
効率は改善されると思います。
(1)Q_在庫の品番をプライマリキーにする
(2)Q_受注の品番にインデックスを付ける
(3)Q_在庫の品番とQ_受注の品番の間でリレーションシップを設ける
(4)SQL文にDISTINCTを付けない
この他、DBシステムによっては条件式の書き方、大文字小文字の統一
くらいでも処理速度に差が出ることが、しばしばあります。
3.Q_可否のような結果を求めるSQLはさほど複雑とは思えません。
よほど言語体系の異なるSQLでなければ、保守性の心配は少ないと
思います。但し、処理速度の足を引っ張っている原因は色々あるので、
パススルーにして、劇的な改善が得られるかどうかは不明でしょう。
この回答への補足
回答ありがとうございます。
ACCESS2003とSQLSERVER2000を使用しています。
>(4)SQL文にDISTINCTを付けない
について調べ、existに変更しました。
また、パススルークエリに変更したところ、2,3秒になりました。
ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(ビジネススキル・経営ノウハウ) 在庫管理のこの問題が分かりません。どなたか解説お願いします 2 2022/04/18 18:35
- 数学 在庫管理のこの問題が分かりません。どなたか解説お願いします 4 2022/04/18 22:19
- 数学 在庫管理のこの問題が分かりません。どなたか解説お願いします 2 2022/04/18 22:21
- Visual Basic(VBA) VBAでの共有パスにつきまして 1 2023/03/04 17:24
- メルカリ メルカリShopsを作るとメルカリで販売は楽になりますか メルカリとまったく変わりませんか? 2 2022/10/11 19:22
- Excel(エクセル) Excelで在庫表(クエリ、ピボット) 2 2022/04/11 17:11
- その他(データベース) accessでの請求管理について 2 2022/06/13 21:51
- Excel(エクセル) 荷捌作業効率をあげるためのエクセル関数を教えてください。 8 2022/10/07 08:17
- Visual Basic(VBA) ExcelからAccessのテーブルに書き込む時に時間がかかる 1 2022/10/14 20:38
- その他(Microsoft Office) Excelの関数(FILTER関数)について教えてください 2 2023/07/31 16:11
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
今、見られている記事はコレ!
-
弁護士が語る「合法と違法を分けるオンラインカジノのシンプルな線引き」
「お金を賭けたら違法です」ーーこう答えたのは富士見坂法律事務所の井上義之弁護士。オンラインカジノが違法となるかどうかの基準は、このように非常にシンプルである。しかし2025年にはいって、違法賭博事件が相次...
-
釣りと密漁の違いは?知らなかったでは済まされない?事前にできることは?
知らなかったでは済まされないのが法律の世界であるが、全てを知ってから何かをするには少々手間がかかるし、最悪始めることすらできずに終わってしまうこともあり得る。教えてgooでも「釣りと密漁の境目はどこです...
-
カスハラとクレームの違いは?カスハラの法的責任は?企業がとるべき対応は?
東京都が、客からの迷惑行為などを称した「カスタマーハラスメント」、いわゆる「カスハラ」の防止を目的とした条例を、全国で初めて成立させた。条例に罰則はなく、2025年4月1日から施行される。 この動きは自治体...
-
なぜ批判コメントをするの?その心理と向き合い方をカウンセラーにきいた!
今や生活に必要不可欠となったインターネット。手軽に情報を得られるだけでなく、ネットを介したコミュニケーションも一般的となった。それと同時に顕在化しているのが、他者に対する辛らつな意見だ。ネットニュース...
-
大麻の使用罪がなかった理由や法改正での変更点、他国との違いを弁護士が解説
ドイツで2024年4月に大麻が合法化され、その2ヶ月後にサッカーEURO2024が行われた。その際、ドイツ警察は大会運営における治安維持の一つの方針として「アルコールを飲んでいるグループと、大麻を吸っているグループ...
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
updateのパラメータを即値でな...
-
複数表での集計値について
-
ビューのソートについて
-
Access無いけど.mdbが見たい!
-
access 特定のレコード数までエ...
-
ACCESS 2003について
-
Oracleで上書きImportはできま...
-
ORA-01401が表示され、データが...
-
稼動中サーバにプライマリキー...
-
テーブルの多寡とカラムの多寡
-
Access リレーションのある項...
-
データ量が多すぎると、テーブ...
-
特定のデータをCSVへ出力について
-
MySQLのテーブルに、CSV形式の...
-
MySQLである項目の値の種類を求...
-
条件によって抽出するデータを...
-
MySQLの容量を増やしたい
-
Load Data INFILE構文について
-
windows7のmysqlのクロス集計で...
-
1つのSQL文で文字列を置換する...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Accessでデータシートに同じデ...
-
Oracleで上書きImportはできま...
-
このISAMでは、リンクテーブル・・
-
テーブルで一番古いレコードだ...
-
ビューのソートについて
-
アクセス レコードセットを更...
-
Accessのテーブルデータを一気...
-
accessでレコード更新直後の反...
-
マテリアライズドビューとスナ...
-
結合テーブルでINSERTする方法...
-
ユニオンクエリで複数ファイル...
-
ORA-01401が表示され、データが...
-
ERROR1062:Duplicate entry.......
-
住所のDBテーブル、マスターの...
-
Accessでの稼働日数計算の方法
-
ACCESSで容量が50MBになった...
-
VBAでSQLServerへのODBC接続
-
ODBC接続で新しいレコードを追...
-
処理の途中で停止させ、再開さ...
-
「クリップボードにコピーされ...
おすすめ情報