[爆卦]sql刪除前幾筆資料是什麼?優點缺點精華區懶人包

為什麼這篇sql刪除前幾筆資料鄉民發文收入到精華區:因為在sql刪除前幾筆資料這個討論話題中,有許多相關的文章在討論,這篇最有參考價值!作者roga (凝視)看板Database標題[SQL ] 大量刪除資料的問題時間Tue Jun ...



環境介紹:使用 DB 是 MySQL

資料表結構:

url_detail_history 資料表
+--------------+---------------------+------+
| Field | Type | Null |
+--------------+---------------------+------+
| id | bigint(11) unsigned | NO | -> 有 Auto_increment
| url_id | int(11) | NO |
| visitor_ip | varchar(15) | NO |
| visitor_fqdn | varchar(100) | NO |
| visitor_time | timestamp | NO | -> CURRENT_TIMESTAMP
+--------------+---------------------+------+

現在裡面有許多筆資料,

SELECT COUNT(id), url_id from url_detail_history GROUP BY url_id

這句語法可以得知每個 url_id 有幾筆資料。

因為前幾天程式上的疏忽,小弟寫錯了一些地方,

以至於資料表非常龐大,我想請問板上前輩們,

有沒有辦法直接用 SQL 語法執行,每個 url_id 只要總數

超過 N 筆資料就刪除到只剩下 N 筆為止,

當然, id 越大代表資料越新,必須能從小的 id 開始刪起。

我有寫一段程式來跑但是效能不彰,

loading 飆到 100 多,拉牛上樹慘不忍睹..

foreach( $url_id ) {

do {
$ID = SELECT min(id) FROM table WHERE url_id = $url_id
$COUNT = (再從資料表算 url_id 有幾筆)

DELETE FROM table where id = $ID

} while( $COUNT < 1501)
}

這樣作法效能很差,不想這麼暴力解這個問題,

想請教前輩不知道有沒有比較好的辦法...謝謝


--

凝視著,卻看不見光景。

--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 220.130.223.207
※ 編輯: roga 來自: 220.130.223.207 (06/09 01:23)

你可能也想看看

搜尋相關網站