データベースに最近追加された行以外をすべて削除するクエリを開発しようとしています。これは、文字列として保存されるタイムスタンプ フィールドと、文字列として保存されるユーザー ID フィールドに基づいています。
table.Timestamp -> text field
table.Retrieving_User -> text field
これは私が開発したクエリです。このデータベースには約 50K のレコードがあり、実行速度が非常に遅いです。これを行う必要があるため、私が行っている文字列から日付への変換が原因ではないことを願っています。
DELETE
FROM `table` main
WHERE (main.Retrieving_User, STR_To_DATE( main.Timestamp , '%a %b %d %H:%i:%s CST %Y' )) NOT IN
(SELECT sub.Retrieving_User, MAX( STR_To_DATE( sub.Timestamp , '%a %b %d %H:%i:%s CST %Y' ))
FROM `table` sub
WHERE sub.Retrieving_User = 'userID'
GROUP BY sub.Retrieving_User )
AND main.Retrieving_User = 'userID'
私がやろうとしていることをより効率的に行う方法を知っている人はいますか?