目前我們記錄了用戶最近20次媒體視圖,以便他們可以簡要記錄他們近期看到的內容。MySQL觸發器會比php更快檢查20多行嗎?
爲此,我們將媒體ID插入表中。
爲了保持表格的小尺寸,目前每個用戶只有20個項目,所以在插入行之前,我們檢查一下他們當前有多少歷史ID,如果它小於20,那麼我們只插入新行,如果它超過20,那麼我們必須選擇最後一行並刪除它,然後才能插入新行。
$historyResult = mysql_query("SELECT id FROM mediatable WHERE userId = $userId ORDER BY id ASC");
if(mysql_num_rows($historyResult) >= 20)
{
$historyResult = mysql_query("SELECT id FROM mediatable WHERE userId = $userId ORDER BY id ASC LIMIT 1");
$historyRow = mysql_fetch_row($historyResult);
mysql_query("DELETE FROM mediatable WHERE id = '$historyRow[0]'");
}
mysql_query("INSERT INTO mediatable (userId, mediaId) VALUES ($userId, $mediaId))");
我的網站現在轉換爲更現代的代碼,將使用PDO查詢,我的quesiton是:
是上面的一個好辦法解決這個或我應該用另一種方法如插入MySQL觸發器?
你也可以嘗試每小時做一次cron,而不是浪費CPU每次調用。 – Jonathan