2
我想從Derby中的表中刪除一定數量的過時行。像這樣:如何在Apache 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()訪問了幾個反覆之後終止比64K行,沒有跡象表明任何事情都出錯了,光標停止返回行,就好像沒有剩下任何東西。
是否有更好的方法來刪除表中的大量行,但不是全部行?
是否有任何可用於過濾刪除的鍵(例如時間戳)? – 2012-02-24 20:46:28
我試圖使用日期列過濾刪除,但無法預測有多少行與任何特定時間跨度很重要的是,我不要一次刪除太多的行。 – Andrew 2012-02-24 21:28:00