Rozumiem, że chcesz usunąć te pliki, których nie ma w bazie? Jeśli tak to można by też zrobić na inny sposób:
1. Tworzysz dwie tablice, do jednej wrzucasz ścieżki do plików z katalogu, do drugiej z bazy.
2. Przelatujesz foreach po tej tablicy z bazy, sprawdzając
in_array czy te pliki są w drugiej tablicy(tej z katalogu).
3. Jeśli true to dajesz
unset na danej wartości i potem na końcu dostaniesz tablicę tylko i wyłącznie z plikami, które są w katalogu a nie ma ich w bazie.
Nie wiem czy do końca ci o to chodziło i czy jest to wydajniejsze, ale poddaję tylko pomysł