Я хочу удалить определенное количество устаревших строк из таблицы в Derby.Примерно так:
DELETE FROM table WHERE obsolete = 1 LIMIT 100000;
Но Derby не поддерживает нестандартный синтаксис LIMIT.К сожалению, обычная замена также не работает:
DELETE FROM table WHERE obsolete = 1 FETCH FIRST 100000 ROWS ONLY;
Хотя в конечном итоге работает следующее, производительность ужасна:
DELETE FROM table WHERE id IN
(SELECT id FROM table WHERE obsolete = 1 FETCH FIRST 100000 ROWS ONLY);
И повторение вызова ResultSet .deleteRow () несколько раз завершается послеПосещение нескольких строк размером более 64 КБ, без указания того, что что-то пошло не так, курсор просто прекращает возвращать строки, как будто их не осталось.
Есть ли лучший способ удалить большое число, но невсех строк в таблице?