В настоящее время у меня есть удаление дубликатов, но процесс занимает слишком много времени, поэтому я пытаюсь уменьшить его и предпочитаю периодически проверять наличие новых дубликатов, возможно, позже с помощью задания cron или превратить его в сценарий php. ID - это первичный ключ. Вот что у меня есть на данный момент.
Это проверяет наличие дубликатов и работает хорошо.
SELECT title, COUNT(title)
FROM `ttrss_entries`
WHERE date(date_entered) >= NOW() - INTERVAL 10 MINUTE
GROUP BY title
HAVING COUNT(title) > 1
Удаление, которое удаляет дубликаты, но занимает около 30 минут. Надеялся, что смогу добавить дату и время, чтобы проверять последние 10 минут каждые 5 минут или около того.
DELETE n1
FROM `ttrss_entries` n1, `ttrss_entries` n2
WHERE n1.id > n2.id AND n1.title= n2.title
$usth = $pdo->prepare(
"INSERT INTO ttrss_entries
(title,
guid,
link,
updated,
content,
content_hash,
no_orig_date,
date_updated,
date_entered,
comments,
num_comments,
plugin_data,
lang,
author)
VALUES
(?, ?, ?, ?, ?, ?,
false,
NOW(),
?, ?, ?, ?, ?, ?)");
$usth->execute([$entry_title,
$entry_guid_hashed,
$entry_link,
$entry_timestamp_fmt,
"$entry_content",
$entry_current_hash,
$date_feed_processed,
$entry_comments,
(int)$num_comments,
$entry_plugin_data,
"$entry_language",
"$entry_author"]);