質問: access 削除クエリが重い お世話になります。 環境:access2003 sql server 2008 r2 express 先日、accessのローカルにあるテーブルが20万レコードを超えた為、sqlサーバーへ移行しました。 しかし、accessより削除クエリにて(フォーム上に設置した削除ボタンにて)当該テーブルのレコードを削除しようとすると、4分ほどかかりました。 なお、ローカルにあったときは上記操作をしても2、3秒程度で削除完了してました。 pcのスペックやテーブルのレコード数によるかとは思うのですが、ローカルテーブルとsqlテーブルでこんなに時間が違うものなのでしょうか。 また、回避策や何か設定すれば早くなるなどございましたら、ご教授頂けたらと思います。 宜しくお願い致します。
回答: sql server 側の設計をどのようにしたのかわからないが、適切なインデックスを作成し、クエリの見直しを行うのが第一歩だと思う。 一般的に where で使われる列はインデックス候補となりやすいため、受注日のインデックスを作成する。 そしておそらくは vba のコードの中で dim sql as string sql = "delete testデータ.受注日 from testデータ where ((testデータ.受注日)=#" & juchu & "#));" とかやっているのかと思うが、sql 文を動的に作成して実行するのをやめて、sql server 側にストアド プロシージャとして作成しなおし、ui 側からはこのプロシージャに必要な日付値を与えてキックする方法にする。 とりあえずそんなところか?