実現したいこと
数百件あるデータがあるテーブルがあり一斉に更新クエリを使った際、20秒ほどラグが発生してしまいます。
更新クエリを使わずに実行したときラグが起きなかったので原因は更新クエリだと考えました。
実現したいこととしましては、極力ラグを抑えたいです。
発生している問題・分からないこと
主となる見積明細テーブルの年度が変更した際、別のテーブルにある年度が一斉に更新する更新クエリを作りました。
しかし、数百件あるデータを一斉に更新したため更新が終わるまで20秒ほどラグが発生してしまいます。
どうすればラグを抑えることができるでしょうか?
初心者で申し訳ございませんが、ご教授の方よろしくお願いします。
該当のソースコード
更新クエリのソースコード UPDATE 加工費 INNER JOIN Q_見積明細 ON 加工費.見積明細ID = Q_見積明細.見積明細ID SET 加工費.年度 = [Q_見積明細]!年度; 加工費の部分が別の表だと材料費などに変わります。 このコードを元に作成したコードを4つのテーブルで更新させ、それらを一斉に実行させた状態でラグが起きます。
試したこと・調べたこと
- teratailやGoogle等で検索した
- ソースコードを自分なりに変更した
- 知人に聞いた
- その他
上記の詳細・結果
・パススルークエリ
→見積明細テーブルを編集したいため更新することが不可能なパススルークエリを使うことができない。
更新先である加工費や材料費のテーブルも同じ
・リレーションシップ
→見積明細テーブルのクエリであるQ_見積明細に年度があり、下記のコードにて作成しクエリにしか年度コードがないためリレーションシップにすることもできない
年度: Year(DateAdd("m",-3,[見積日付]))
・インデックス
→リンクテーブルの各年度テーブルにインデックスを設置
変化なし
インデックスを作る際参考にしたサイト
https://anderson02.com/sqlserver/sqlserver-index/sqlserver-index-2-08/
・データベースツールの「データベースの最適化」
変化なし
補足
・Accessのデータ自体はSQLサーバーである SQL Server 2022 express にて保存。Accessとリンク済み
Microsoft Access 2021(.accdb)
接続先(別のPC側)
・リモートデスクトップ接続にて操作している
・SQL Server Management Studio 19
・SQL Server 2022 express
SQL Server 認証にて接続
・Windows Server 2022 Standard
・名前付きインスタンス
見積(主 見積ID)ー見積明細(見積明細ID)ー見積明細備考(見積明細備考ID)
加工費,材料費,初回費用,運賃(主キーは名前+ID 加工費IDなど)
各テーブルに見積ID、見積明細IDがある
回答1件
あなたの回答
tips
プレビュー