нет, запрос делал прямо на серваке, в общем в итоге сделал как и написал - то, что DELETE долго выполнялся - нормально - в конечном счете он отработал и все стало нормально

всем спасибо за участие. если кому надо:
шаг 1. пишем скрипт, который вытаскивает все id по дереву (либо на скуле - я не смог, либо на другом языке - писал на php, выполнялся не более 1 сек. (в дереве оказалось 7 000 записей уникальных))
шаг 2. удаляем все элементы в objects, которые не в дереве:
DELETE FROM objects WHERE id NOT IN (SELECT id FROM temp_id_tree)
шаг 3. удаляем все элементы из objectsLink, ссылки на которые ведут на несуществующие объекты
DELETE FROM objectsLink WHERE idObject NOT IN (SELECT id FROM objects) AND idObject!=0
DELETE FROM objectsLink WHERE idParent NOT IN (SELECT id FROM objects) AND idParent!=0
нули там обрабатываются - специфика структуры базы, так !=0 можно и не писать...
вот... пожалуй один из самых быстрых вариантов