mayu
2024/04/03 (水) 20:51:48
fc5d2@6c788
Accessは( Microsoft謹製のDBMSでは )
相関サブクエリのパフォーマンスがJOINに比べて劣る印象はありますね
しかしながら、Access-SQLにおいて
削除したいと思っています
という場合、
つまり、UPDATE文やDELETE文を発行するケースでは
FROM句やJOIN句に sum, max, min といった集計関数を含めることは出来ません
( 利用できるのは、パフォーマンスが悪いD系の定義域集計関数だけ )
そのため、hatenaさんのアドバイスにあるとおり適切にINDEXを設定した上で
以下のようなSQLを発行するといいでしょう
SELECT * FROM Mtbl_所属歴 x
WHERE EXISTS
(
SELECT 1 FROM Mtbl_所属歴 y
WHERE x.社員No = y.社員No
HAVING x.開始日 > min(y.開始日)
AND x.終了日 < max(y.終了日)
);
結果セットとパフォーマンスが確認できたら
SELECT → DELETE に変更し
2.特定の名称(育児、介護の文字が含まれる)が含まれる
の条件も付与して下さい
なお、上記の相関サブクエリでも
パフォーマンスが悪すぎてまともに動きません
という場合は
hatenaさんの回答>> 2のサブクエリ Q1 の結果セットを
一旦テンポラリテーブルに格納するといいでしょう
通報 ...