我必須刪除每個帳戶+ date_added組合的數據,這些數據超過N天。 通過N天的時候,它意味着此處刪去比第一N個不同出現較老的上述組合刪除N天以前的不同條目
DELETE
FROM tbl_check
WHERE
N < (SELECT count(DISTINCT date_added) + 1
FROM tbl_check b
WHERE b.ACCOUNT_NUMBER = tbl_check.ACCOUNT_NUMBER
AND tbl_check.date_added < b.date_added)
此查詢必須在兩者的Sybase ASE和Oracle運行。我已經寫過上面的查詢,它試圖模擬DENSE_RANK,並且正在根據排名成功刪除。
但是,它不使用任何索引,並且也是執行FTS的相關查詢。該表中可能有成千上萬行。
有複合PK是:FOREIGN_KEY_COL,ACCOUNT_NUMBER,DATE_ADDED .. 這是查詢勝任工作,或者我們可以改進後,它給予相同的查詢具有如提到的兩個數據庫工作。
也有一些方法,使這項刪除那些緩存將是很好 – fortm 2014-09-11 14:25:37